字节数组字符串到字节数组? [复制]

Posted

技术标签:

【中文标题】字节数组字符串到字节数组? [复制]【英文标题】:ByteArray String to ByteArray? [duplicate] 【发布时间】:2015-03-19 23:02:39 【问题描述】:

我有一个要转换为字节数组的字符串,但是,我的字符串是图像字节数组的实际表示(例如String x = "00123589504e47...")。所以,我被卡住了,因为 x.getBytes(); 不能完成这项工作。我需要一种方法将字符串转换为字节数组,然后将该字节数组保存到特定目录中的图像中。我该如何施放它?

【问题讨论】:

我的字符串是字节数组的实际表示:这是什么意思?要精确。假设字节是 1、-6 和 124。对应的字符串是什么? 显示输入字符串和预期输出。 如果是base16编码的,看这个问题:***.com/questions/140131/… 这没有任何意义。字节是一个数字,其值可以从 -128 到 127。图像文件可以包含这些值中的任何一个。如何从图像的字节创建字符串? “字节表示”不明确。将字节数组表示为字符串的方法不止一种。请指定字符串的确切格式。 【参考方案1】:

我总是用这一个班轮:

   byte[] data = DatatypeConverter.parseHexBinary(x);

然后您可以为图像实例化 FileOutputStream 并将字节写入其中。

【讨论】:

【参考方案2】:

x.getBytes(); 并不能完成这项工作

是的,这很正常……

charbyte 彼此没有关系;你不能无缝地从一个转换到另一个并期望获得一个理智的结果。阅读有关字符编码的信息。

根据您的需要,字符串实际上是图像的“十六进制转储”。因此,您需要通过两个字符读取两个字符并将其转换为字节数组。

怎么样?嗯,你有提示。首先,生成的字节数组的长度始终是字符串除以 2 的长度,因此您可以这样做:

// input is the string
final int arrayLen = input.length() / 2;
final byte[] result = new byte[arrayLen];

然后你需要遍历字符串的字符并将这两个字符解析为一个字节,并将其添加到数组中:

int strIndex;
char[] chars = new char[2];

for (int arrayIndex = 0; arrayIndex < arrayLen; arrayIndex++) 
    strIndex = 2 * arrayIndex;
    chars[0] = input.charAt(strIndex);
    chars[1] = input.charAt(strIndex + 1);
    result[arrayIndex] = Byte.parseByte(new String(chars), 16);


// Done
return result;

【讨论】:

以上是关于字节数组字符串到字节数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

DELPHI如何读取一个图片,保存到字节数组中

在C++中,如何把字节数组转换成字符串

如何将字节数组转换为字符串? [复制]

将 ansichar 数组复制到 char delphi 10.2 数组

ByteBuffer 和字节数组

Java基础知识十一:FileInputStream字节输入流读取文件复制读取字节数组复制图片案例,字节缓冲流介绍复制视频案例,字符串编码与解码