使用Java将诸如0xBD3E9110
之类的字符串转换为BitSet
(例如1011 1101 0011 1110 1001 0001 0001 0000
)的最佳和最简单的方法是什么?即,形式的方法:Java六进制字符串到位集
public BitSet hexStringToBitSet(String hexString) {
//...
}
我想获得BitSet
,这样我可以使用get(i)
,以获得每一个返回的32位中的true
/false
值。
使用Java将诸如0xBD3E9110
之类的字符串转换为BitSet
(例如1011 1101 0011 1110 1001 0001 0001 0000
)的最佳和最简单的方法是什么?即,形式的方法:Java六进制字符串到位集
public BitSet hexStringToBitSet(String hexString) {
//...
}
我想获得BitSet
,这样我可以使用get(i)
,以获得每一个返回的32位中的true
/false
值。
这似乎工作。
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);
}
即假定值被限制为适合一个'long',例如一个值'“0xBD3E9110BD3E9110BD3E9110BD3E9110BD3E9110”'不起作用。 – Andreas
@Andreas每个返回的32位的单词都隐藏在问题的末尾。 –
查找Java API documentation中的BitSet。在那里,您会找到几种创建所需值的BitSet的方法。也许valueOf(long[])将是最容易使用的情况下,即使你只需要一个元素而不是整个数组,而且你想要一个int,但是long也是可以的。您可以使用Long.decode(String)
创建一个长整型,然后将其放入一个元素的数组中,并将其传递给BitSet。你只需要BitSet的前32位。
尝试这种情况:
import javax.xml.bind.DatatypeConverter;
BitSet bits = BitSet.valueOf(DatatypeConverter.parseHexBinary(hexbinary));
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());
}
在地图定义值,则分割字符串 – redFIVE