Java 将字符串格式化为十六进制值并将其附加到字符数组中
我有以下代码Java 将字符串格式化为十六进制值并将其附加到字符数组中,java,binary,hex,decimal,Java,Binary,Hex,Decimal,我有以下代码 String test1 = "10"; String result = String.format("%02X", test1); char buffer[] = {result.charAt(0),0x01,0x00,0x01,0x00,0x20}; byte[] bufferbyte = new String(buffer).getBytes(); for (byte b : bufferbyte){ System.out.format("0X%x ", b); } 实
String test1 = "10";
String result = String.format("%02X", test1);
char buffer[] = {result.charAt(0),0x01,0x00,0x01,0x00,0x20};
byte[] bufferbyte = new String(buffer).getBytes();
for (byte b : bufferbyte){
System.out.format("0X%x ", b);
}
实际上,字符串变量“test1”包含十进制值。我的意思是说,用户可以输入1-256个整数,它存储在“test1”中。我以10为例。我需要将它的十六进制值(0A)附加到char数组中,在第一个位置添加“buffer”,并将其显示为包含十六进制值的字节数组
上面的代码将错误显示为
"Exception in thread "main" java.util.IllegalFormatConversionException: x != java.lang.String"
试试这个
String result = String.format("%02X", Integer.parseInt(test1));
输出0A
您正在尝试格式化
字符串
您需要格式化整数
表示。如果您的test1将包含整数,为什么将其声明为字符串?Integer.parseInt(test1)代码>程序的另一部分将其作为字符串接收。对于test1=“10”,它显示“0X30 0X1 0X0 0X1 0X0 0X0 0X20”,而它应该显示“0X01 0X1 0X0 0X1 0X0 0X0 0X20”。我认为它显示的是1Java使用Unicode而不是ascii的ascii等效十六进制值,但这与事实不符。是否将1
转换为十六进制,然后将0
转换为十六进制,还是将10
转换为十六进制?是否确定第一个元素应为0x01?可能是0x0A?char buffer[]={(char)Integer.parseInt(test1),0x01,0x00,0x01,0x00,0x20};这条线行吗。我得到了结果。但是,如何。。是否将字符串转换为int,然后再转换为charInteger.parseInt返回int(4字节)char为2字节,因此(char)截断int的前2个字节
public class SSCCE
{
public static void main(final String[] args)
{
final String ten = "10";
final Integer i = Integer.parseInt(ten);
System.out.format("%02X", i);
}
}