2015-10-26 38 views
0

使用Java將諸如0xBD3E9110之類的字符串轉換爲BitSet(例如1011 1101 0011 1110 1001 0001 0001 0000)的最佳和最簡單的方法是什麼?即,形式的方法:Java六進制字符串到位集

public BitSet hexStringToBitSet(String hexString) { 
    //... 
} 

我想獲得BitSet,這樣我可以使用get(i),以獲得每一個返回的32位中的true/false值。

+0

在地圖定義值,則分割字符串 – redFIVE

回答

3

這似乎工作。

public static BitSet hexStringToBitSet(String hexString) { 
    return BitSet.valueOf(new long[]{Long.valueOf(hexString.substring(2), 16)}); 
} 

public static void main(String[] args) { 
    BitSet bitSet = hexStringToBitSet("0xBD3E9110"); 
    System.out.println(bitSet); 
} 
+0

即假定值被限制爲適合一個'long',例如一個值'「0xBD3E9110BD3E9110BD3E9110BD3E9110BD3E9110」'不起作用。 – Andreas

+2

@Andreas每個返回的32位的單詞都隱藏在問題的末尾。 –

0

查找Java API documentation中的BitSet。在那裏,您會找到幾種創建所需值的BitSet的方法。也許valueOf(long[])將是最容易使用的情況下,即使你只需要一個元素而不是整個數組,而且你想要一個int,但是long也是可以的。您可以使用Long.decode(String)創建一個長整型,然後將其放入一個元素的數組中,並將其傳遞給BitSet。你只需要BitSet的前32位。

0

嘗試這種情況:

import javax.xml.bind.DatatypeConverter; 

BitSet bits = BitSet.valueOf(DatatypeConverter.parseHexBinary(hexbinary)); 
0
public BitSet hexStringToBitSet(String hexString) { 

    ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
    for(int i = 0; i < hexString.length() - 1; i += 2) { 
     String data = s.substring(i, i + 2); 
     bout.write(Integer.parseInt(data, 16)); 
    } 
    return BitSet.valueOf(bout.toByteArray()); 
} 
相關問題