繁体   English   中英

将十六进制字符串转换为二进制字符串-Java

[英]Convert Hex String to Binary String - Java

好的,所以我想将十六进制字符串转换为二进制字符串,这样我就可以在行下进行一些交换和替换等操作,我遇到了我认为是这里的答案的方法将十六进制字符串转换为二进制字符串,但这导致了我问题。

String hexToBinary(String hexadecimalString) {
    int i = Integer.parseInt(hexadecimalString, 16);
    String binaryString = Integer.toBinaryString(i);
    return binaryString;
}

但是,例如,如果我传入十六进制字符串“ 03”,它将仅返回二进制字符串“ 11”。 或者,如果我要传递十六进制字符串“ 41”,它将返回二进制字符串“ 1000001”。 如何使它始终返回长度为8位的二进制字符串? 所有帮助提前非常感谢:)

尝试过建议填充二进制字符串的建议,但是它没有用,这是我尝试过的方法,您可以看到我做错了吗?

String hexToBinary(String hexString) {
    int i = Integer.parseInt(hexString, 16);
    String binaryString = Integer.toBinaryString(i);
    String padded = String.format("%8s", binaryString.replace(' ', '0'));
    return padded;
}

使用String.format

尝试这个:

String.format("%8s", Integer.toBinaryString(i)).replace(' ', '0')
String hexToBinary(String hexadecimalString) {
int i = Integer.parseInt(hexadecimalString, 16);
String binaryString = Integer.toBinaryString(i);
while (binaryString .length() < 8) {
        binaryString  = "0" + binaryString ;
    }
return binaryString;
}

在字符串的开头添加0,直到binaryString的长度为8

在许多其他解决方案中,这可能是一个。

StringBuilder sb = new StringBuilder();
String binaryString = Integer.toBinaryString(41);
for (int i = binaryString.length(); i < 8; i++) {
    sb.append('0');
}
sb.append(binaryString);
System.out.println(sb.toString());

或这个

StringBuilder sb = new StringBuilder("00000000");
sb.append(Integer.toBinaryString(41));
System.out.println(sb.substring(sb.length()-8));

甚至这个

String s = "00000000" + Integer.toBinaryString(41);
System.out.println(s.substring(s.length()-8));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM