Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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_Binary_Hex_Decimal - Fatal编程技术网

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);
    }
}