2017-07-06 91 views
-1

我目前正在使用Java和MySQL,並且發現了一個我不知道如何解決的問題。Java&MySQL:存儲讀取bitarray的365位置。怎麼樣?

我有一個類存儲一個365位置的字符串,表示一個二進制字符串「010111010010100 ...」,我希望能夠從數據庫中存儲和讀取該字段。 一旦它被讀取,我將執行一個AND邏輯操作與另一個bitarray。

我讀了BitSet類,它允許它們之間的邏輯運算符(AND,OR,XOR,...)。我嘗試過,但我不喜歡我得到的解決方案。我也可以嘗試將字符串轉換爲字節數組,然後將其從數據庫中存儲並讀取,以便稍後執行邏輯AND操作,但不確定是否需要始終創建一個BitSet,以及如何執行它是。

我不知道這是做什麼我想最高效的方式:

  • 將二進制字符串轉換中的另一個元素。
  • 將該元素存儲在數據庫中(在BitSet的情況下,我試圖將Database字段定義爲BLOB,但是我有很多問題將BitSet轉換爲BLOB並將BLOB讀取到BitSet)。
  • 從數據庫中讀取元素(在這一點上,如果不進行任何轉換或轉換,直接使用元素將非常有用)。
  • 用另一個bitarray執行邏輯AND並得到結果。

我已經嘗試了很多選擇,但他們沒有工作。

有人可以幫助我解決這個問題,以及如何從性能角度更好地處理它?

謝謝!

回答

0

在字符串中存儲位有點奇怪,我用了很長時間來存儲一個數字,並對其進行按位運算。它不適合你,因爲你使用更多的位。如果能保持字符串,也許你可以寫一個小功能,使和操作員的字符串的每個字節,在某種程度上是這樣的:

for (int i = 0; i<366; i++) { 
    data .= (stringname[i] == binarystring[i]?"1":"0"); 
} 

通過你的字符串,同時檢查它是否等於二進制字符串(一個你想和它),如果他們相等,concat 1,如果不是,concat 0;

+0

那麼,我的第一點是,我必須轉換另一種類型的字符串。問題是,它是365位長,我不能被存儲在一個龍,所以它必須被存儲爲一個不同的方式,... – CristianSantos

+0

然後把它放入一個字節或東西陣列? (int j = 0; j <8; j ++) (string [i + j] ==「1」?byte [0124] j] | = 0x01:byte [j] | = 0x00); byte [j] << = 1; } 或類似的東西。 – kry