将字符串[]转换为字节[] 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]
你指定UTF-16LE作为编码。这将始终为每个Java使用2个字节char
。如果您不想使用每个字符2个字节,请不要使用UTF-16 ...
如果两个字符在SREC文件中由单个字节表示,那么您需要有某种映射从String
到Byte
- 有2个可能的2个字符的字符串,但只有256个可能的字节。假设这是一个固定映射,您可能只想硬编码Map<String, Byte>
,并从地图中获取值。
(如果值是真的只是十六进制,你可以使用现有的十六进制代码解析 - 但没有你给样品字符串是一个有效的对十六进制数字)
SREC转换成字节十六进制编码数字。
http://en.wikipedia.org/wiki/SREC_%28file_format%29
这是你看起来是试图做相反的事情。
好的,我应该使用什么?
编写一个循环,其中一个字符串的每个字节都转换成等效的十六进制。有无数的例子可用。
我需要操纵我的程序中的一些东西,并将它发送回另一个不再使用srec文件的方法......我只需要每读入两个字符就可以转换成一个字节... – BigBug 2012-03-05 16:50:53
你能添加一个你想对问题做什么映射的例子,因为没有这样做的标准方法? (而不是指SREC完全不同) – 2012-03-05 16:52:56
我怀疑你的实际需求是遵循SREC规范并将每个字符转换为两个字节(以十六进制表示)。 – 2012-03-05 16:57:32
每两个字符怎么可能是一个字节?你的意思是每个字符都是两个字节吗? – Taymon 2012-03-05 16:47:46
你的问题不清楚。 “每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
'UTF-16LE'会将每个字符转换为两个字节。 – 2012-03-05 16:53:39