【发布时间】:2012-04-13 14:52:33
【问题描述】:
我有一个看起来像这样的十六进制字符串:
String hexImage ="0xFFD8FFE000104A46494600010200006400640000FFEC00114475636B79000100040000003C..."
我需要使用 Java 将其转换为图像。我尝试先使用 org.apache.commons.codec.binary.Hex 类转换为字节数组。 FileOutputStream 稍后将其转储到文件中。
char[] charArr= hexImage.toCharArray();
byte[] byteArray = Hex.decodeHex(charArr);
但是 Hex 类中的解析器阻塞,解码器异常:奇数个字符。无论我使用什么方法转换为字节数组,它都失败了。文件格式绝对是 JPEG。
我尝试从字符串中删除 this 0xFF,但此时图像已损坏。我认为 0xFF 是罪魁祸首 - 有人知道我需要做什么来纠正这个问题吗?
【问题讨论】:
-
你试过删除什么
THIS? -
也许是因为错误消息提示的字符数是奇数。你检查过这个吗? Hex 方法是否希望您以
0x开头? -
@PeterLawrey 关于字符串是否应该以
0x开头的好点,但是这些是 2 个字符,因此 OP 仍然对初始字符串有问题。 -
对于 JPEG/JIFF,从 FFD8 开始是可以的。这是“图像开始”的代码