我的字符串值为" 0x0601930600058000050001",需要转换为字节数组
byte[] codes1 = new byte[]{(byte)0x06,(byte)0x01,(byte)0x93,(byte)0x06,(byte)0x00,(byte)0x05,(byte)0x80,(byte)0x00,(byte)0x05,(byte)0x00,(byte)0x01};
for(byte b : codes1){
System.out.println(b);
}
System.out.println("======================");
byte[] cod = "0x0601930600058000050001".getBytes();
for(byte b : cod){
System.out.println(b);
}
两种结果都不同,如何使它们相同。第一个循环输出是我所期望的实际输出,第二个循环是错误的输出。
如果你看到,我正在拆分每个2字节并输入强制转换并使用0x来获取实际值。
问题:是否有任何预定义的方法(Apache commons codec)可以帮助我完成与第一个循环相同的任务?我在运行时动态获取String值。
请建议。
谢谢!
答案 0 :(得分:1)
您的字符串是字节数组的十六进制表示形式!
使用番石榴,你可以这样做:
byte[] bytes = BaseEncoding.base16().decode(mystring)
答案 1 :(得分:0)
我会选择:
byte[] result = myString.getBytes();
或
byte[] result = myString.getBytes(Charset.forName("UTF-8"));