Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将十六进制字符串转换为二进制字符串-Java_Java_String_Binary_Hex - Fatal编程技术网

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

将十六进制字符串转换为二进制字符串-Java,java,string,binary,hex,Java,String,Binary,Hex,好的,我想把一个十六进制字符串转换成一个二进制字符串,这样我就可以进行一些位交换和子交换等,我在这里遇到了我认为是答案的东西,但这给我带来了一些问题 String hexToBinary(String hexadecimalString) { int i = Integer.parseInt(hexadecimalString, 16); String binaryString = Integer.toBinaryString(i); return binaryStrin

好的,我想把一个十六进制字符串转换成一个二进制字符串,这样我就可以进行一些位交换和子交换等,我在这里遇到了我认为是答案的东西,但这给我带来了一些问题

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("%8s", Integer.toBinaryString(i)).replace(' ', '0')

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

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());
甚至这个

String s = "00000000" + Integer.toBinaryString(41);
System.out.println(s.substring(s.length()-8));
字符串十六进制二进制(字符串十六进制字符串){
inti=Integer.parseInt(十六进制字符串,16);
String binaryString=Integer.toBinaryString(i);
while(binaryString.length()<8){
binaryString=“0”+二进制字符串;
}
返回二进制字符串;
}

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

检查此项。您只需要在字符串长度为8个字符之前使用零填充。必须对
string.format()
的结果调用
replace()
,而不是对
binrayString
进行调用。您好,Iswanto,我尝试了您的建议,但它仍然返回相同的字符串,没有填充?@lifeisaloop那么您一定做错了什么。因为这个例子是正确的。对于41,它返回
00101001
。是的,我在那里又看了一遍,但我打错了。谢谢你们的帮助!
String s = "00000000" + Integer.toBinaryString(41);
System.out.println(s.substring(s.length()-8));
String hexToBinary(String hexadecimalString) {
int i = Integer.parseInt(hexadecimalString, 16);
String binaryString = Integer.toBinaryString(i);
while (binaryString .length() < 8) {
        binaryString  = "0" + binaryString ;
    }
return binaryString;
}