首頁  >  文章  >  後端開發  >  01字串的用處

01字串的用處

WBOY
WBOY原創
2016-08-08 09:26:261332瀏覽

  今天在做東西的時候,發現了幾個挺有意思的地方,記下來和大家分享分享。從幾個小問題開始

記錄一個年齡層你會怎麼記錄,能表達類似「50~70」之類的就可以?

  也許你會說很簡單啊,用兩個字段,一個start=>開始年齡、一個end=>結束年齡,更或者在一個字段中,使用start|end這樣的格式,中間用一個非數字隔開,或用start|start-end,哈哈,反正方法很多,但是這時候如果要求升級,要你表示10~20、25、29~40這些年齡,你要怎麼表示呢?當然也可以用字串去表示例如:10-20|25|29-40,自己訂一些規則去表示,但是這個表示方法還可以優化嗎,答案是肯定的。

  可以用01字串去表示不重複的年齡區間,預設是100個0,標誌1~100歲的位置,如果為1則表示有該年齡,為零則表示沒有該年齡。為了好說明,這裡使用10個零,表示1~10歲,那麼:

0111111000    =>  表示2~7歲

0110111010    => 表示2~3、5~7、9歲

  哈哈,是不是很方便就可以表示了,而且很容易理解,當然了,這樣也有他的缺點,這樣表示起來很方便,但是用起來確不方便,需要去計算。

從1、2、3、......、199、200裡面隨機選些數,怎麼表示?

  當然了,這個方法有很多種,比如說用字串表示,每個數字之間用非數字分割,像這樣:1|5|100|199。我想說的這種還是用01串表示,就像上面的1~200,選取其中的一部分這個問題,我可以使用200個位置的字串,每個位置是0或者1,每個位置放好是它對應的數字,這樣的話,就又將這些資訊表示為01字串了。還是按照0~10舉例

0111111000    =>  表示2、3、4、5、6、7

0110111010    => 表示2、3、5、6、7、9

  當然了有人可能會說了,我想表示的數據不是連續的,比如說我想表示

  1926、19658、12、5638、8975、965、369、5126、5698、14556

  上面這些數有的很大有的很小,沒有規律,我們要表示總體不超過10個的數不會去用他們中最大的個數個位置吧(比如說這裡19658個0),當然不會,這種情況可以使用映射,映射關係如下:

<span>1</span> => <span>1926</span><span>,
</span><span>2</span> => <span>19658</span><span>,
</span><span>3</span> => <span>12</span><span>,
</span><span>4</span> => <span>5638</span><span>,
</span><span>5</span> => <span>8975</span><span>,
</span><span>6</span> => <span>965</span><span>,
</span><span>7</span> => <span>369</span><span>,
</span><span>8</span> => <span>5126</span><span>,
</span><span>9</span> => <span>5698</span><span>,
</span><span>10</span> => <span>14556</span>

  這個時候要想表示1926、12、5698這幾個選中的情況的時候,可以使用下面的01串:

  1010000010

  也許你也發現了,這個還可以起到節省流量的效果,我們在雙方交互的時候,把映射關係建立好,網絡傳遞的時候不需要傳遞真實的數據,只需要傳遞對應的01串就行。

  當然了,這個還可以表示很多東西,比如說我把一天的時間沒5分鐘分為1段,一共有288段,這個時候從這裡面隨機選取一些個5分鐘段,用288個自己長度的01串來表示這個是不是挺好的,哈哈。

  在某種情況下這種01串表示的方式還是挺可取的,有時候會起到節省流量的效果。

以上就介紹了01字串的用處,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn