我有一个包含SREC文件内容的字符串。在SREC文件中,每2个字符是一个字节(在这种情况下是指令)。
如果我将字符串变成字符串数组,然后将该字符串数组的元素转换为字节(至少我认为这就是我正在做的事情),它仍然将每个字符分成一个字节。 ..我怎么绕过这个?
示例1:
String[] myFile = new String[]{"s1", "my", "na", "me","is"};
try
{
byte[] byteArray = myFile[1].getBytes("UTF-16LE");
System.out.println(java.util.Arrays.toString(byteArray));
}
结果: [109,0,121,0]
答案 0 :(得分:1)
您将UTF-16LE指定为编码。对于每个Java char
,它总是使用2个字节。如果您不想每个字符使用2个字节,请不要使用UTF-16 ...
如果SREC文件中的单个字节表示两个字符,那么您需要从String
到Byte
进行某种映射 - 有2个 32 可能的2个字符的字符串,但只有256个可能的字节。假设这是一个固定的映射,您可能只想对Map<String, Byte>
进行硬编码,并从地图中获取值。
(如果值实际上只是十六进制,则可以使用现有的十六进制解析代码 - 但是您提供的示例字符串都不是一对有效的十六进制数字。)
答案 1 :(得分:1)
SREC将字节转换为十六进制编码数字。
http://en.wikipedia.org/wiki/SREC_%28file_format%29
这与你似乎想做的事情相反。
好的,我该怎么用?
写一个循环,将String的每个字节转换为等效的十六进制数。有无数的例子。