String []到byte [] 2个字符成一个字节?

时间:2012-03-05 16:44:42

标签: java string bytearray

我有一个包含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]

2 个答案:

答案 0 :(得分:1)

您将UTF-16LE指定为编码。对于每个Java char,它总是使用2个字节。如果您不想每个字符使用2个字节,请不要使用UTF-16 ...

如果SREC文件中的单个字节表示两个字符,那么您需要从StringByte进行某种映射 - 有2个 32 可能的2个字符的字符串,但只有256个可能的字节。假设这是一个固定的映射,您可能只想对Map<String, Byte>进行硬编码,并从地图中获取值。

(如果值实际上只是十六进制,则可以使用现有的十六进制解析代码 - 但是您提供的示例字符串都不是一对有效的十六进制数字。)

答案 1 :(得分:1)

SREC将字节转换为十六进制编码数字。

http://en.wikipedia.org/wiki/SREC_%28file_format%29

这与你似乎想做的事情相反。

  

好的,我该怎么用?

写一个循环,将String的每个字节转换为等效的十六进制数。有无数的例子。