将字符串[]转换为字节[] 2个字符转换为字节?

问题描述:

我有一个字符串,其中包含一个SREC文件的内容。在SREC文件中,每2个字符是一个字节(在这种情况下,这是一个指令)。将字符串[]转换为字节[] 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

每两个字符怎么可能是一个字节?你的意思是每个字符都是两个字节吗? – Taymon 2012-03-05 16:47:46

+0

你的问题不清楚。 “每2个字符是一个字节”是什么意思?在附注中,您的输出是字符串“my”('myFile [1]')的UTF-16表示形式,Java中的“char”是一个单一的16位Unicode字符,它具有最小值的'\ u0000'(或0)和最大值'\ uffff'(或包括65,535)。“_([link](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes的.html))。 – 2012-03-05 16:49:46

+0

'UTF-16LE'会将每个字符转换为两个字节。 – 2012-03-05 16:53:39

你指定UTF-16LE作为编码。这将始终为每个Java使用2个字节char。如果您不想使用每个字符2个字节,请不要使用UTF-16 ...

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

(如果值是真的只是十六进制,你可以使用现有的十六进制代码解析 - 但没有你给样品字符串是一个有效的对十六进制数字)

+0

好的,我应该使用什么? – BigBug 2012-03-05 16:48:30

+0

@BlueMonster:我们不知道字符串是如何映射到SREC文件中的字节的。你甚至没有告诉我们SREC是什么。你有一个可以链接到的规范吗? – 2012-03-05 16:51:10

+0

SREC并不重要,重要的部分是我正在从文件中读取某些内容到字符串中...并且从该字符串开始,每个2个字符都是一条指令,而且我需要每个2个字符都是一个字节... – BigBug 2012-03-05 16:52:57

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

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

这是你看起来是试图做相反的事情。

好的,我应该使用什么?

编写一个循环,其中一个字符串的每个字节都转换成等效的十六进制。有无数的例子可用。

+0

我需要操纵我的程序中的一些东西,并将它发送回另一个不再使用srec文件的方法......我只需要每读入两个字符就可以转换成一个字节... – BigBug 2012-03-05 16:50:53

+0

你能添加一个你想对问题做什么映射的例子,因为没有这样做的标准方法? (而不是指SREC完全不同) – 2012-03-05 16:52:56

+0

我怀疑你的实际需求是遵循SREC规范并将每个字符转换为两个字节(以十六进制表示)。 – 2012-03-05 16:57:32