程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 這樣用01串,用01串

這樣用01串,用01串

編輯:關於PHP編程

這樣用01串,用01串


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

記錄一個年齡段你會怎麼記錄,能表達類似“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),當然不會,這種情況可以使用映射,映射關系如下:

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

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

  1010000010

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

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

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

 

  本文版權歸作者iforever([email protected])所有,未經作者本人同意禁止任何形式的轉載,轉載文章之後必須在文章頁面明顯位置給出作者和原文連接。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved