我有0和1个字符串类型组合,总长度为256。
如何将其转换为十六进制?
我可以使用64或更小长度的组合来做,但是当长度为256时不能这样做
你可以帮我吗?任何例子? 非常感谢提前。答案 0 :(得分:4)
最简单的方法是使用BigInteger
。只要你有足够的内存,它就能够转换任意长度的String:
String str = "100010110101...";
String hex = new BigInteger(str, 2).toString(16);
如果不使用中间BigInteger
将输入字符串拆分为固定长度的块(也适用于任意长度的输入字符串),实现此转换也不是很困难:
public static String binToHex(String str) {
int l = str.length();
StringBuilder result = new StringBuilder();
int cur = 0;
for (int next = l - l / 32 * 32; next <= l; next += 32) {
result.append(Long.toHexString(Long.parseLong(
str.substring(cur, next), 2)));
cur = next;
}
return result.toString();
}