从十六进制到二进制的转换在 Java 中保持 8 位
Conversion from hex to binary keeping 8 bits in Java
我需要在一个 8x8 矩阵中写入 8 个十六进制数(一个代表行)的二进制值。这些数字最多为 8 位长。我编写了以下代码将十六进制转换为二进制:
private String hexToBin (String hex){
int i = Integer.parseInt(hex, 16);
String bin = Integer.toBinaryString(i);
return bin;
}
但我有一个问题,即低于 0x80 的值不需要 8 位来表示为二进制。我的问题是:是否有一个函数可以转换为 8 位格式的二进制文件(用零填充左侧位置)?非常感谢
提示:使用字符串连接在适当的位置添加适当数量的零。
例如:
public String hexToBin(String hex) throws NumberFormatException {
String bin = Integer.toBinaryString(Integer.parseInt(hex, 16));
int len = bin.length();
return len == 8 ? bin : "00000000".substring(len - 8) + bin;
}
(警告:未经测试...)
My question is: is there a function to convert to binary in an 8-bit format (filling the left positions with zeros)?
不,没有。得自己写。
这是一种简单的方法。如果您 知道 输入始终是单字节,那么您可以在调用 toBinaryString
之前将数字加 256。这样,字符串将保证为 9 个字符长,然后您可以使用 substring
:
去掉第一个字符
String bin = Integer.toBinaryString(256 + i).substring(1);
我是这样拼接的。谢谢!
private String hexToBin (String hex){
int i = Integer.parseInt(hex, 16);
String bin = Integer.toBinaryString(i);
while (bin.length()<8){
bin="0"+bin;
}
return bin;
}
我需要在一个 8x8 矩阵中写入 8 个十六进制数(一个代表行)的二进制值。这些数字最多为 8 位长。我编写了以下代码将十六进制转换为二进制:
private String hexToBin (String hex){
int i = Integer.parseInt(hex, 16);
String bin = Integer.toBinaryString(i);
return bin;
}
但我有一个问题,即低于 0x80 的值不需要 8 位来表示为二进制。我的问题是:是否有一个函数可以转换为 8 位格式的二进制文件(用零填充左侧位置)?非常感谢
提示:使用字符串连接在适当的位置添加适当数量的零。
例如:
public String hexToBin(String hex) throws NumberFormatException {
String bin = Integer.toBinaryString(Integer.parseInt(hex, 16));
int len = bin.length();
return len == 8 ? bin : "00000000".substring(len - 8) + bin;
}
(警告:未经测试...)
My question is: is there a function to convert to binary in an 8-bit format (filling the left positions with zeros)?
不,没有。得自己写。
这是一种简单的方法。如果您 知道 输入始终是单字节,那么您可以在调用 toBinaryString
之前将数字加 256。这样,字符串将保证为 9 个字符长,然后您可以使用 substring
:
String bin = Integer.toBinaryString(256 + i).substring(1);
我是这样拼接的。谢谢!
private String hexToBin (String hex){
int i = Integer.parseInt(hex, 16);
String bin = Integer.toBinaryString(i);
while (bin.length()<8){
bin="0"+bin;
}
return bin;
}