gpt4 book ai didi

java - 十六进制字符串到图像

转载 作者:行者123 更新时间:2023-11-29 06:00:52 24 4
gpt4 key购买 nike

我有一个十六进制字符串,如下所示:

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 我认为是罪魁祸首 - 任何人对我需要做什么来纠正这个有任何想法吗?

最佳答案

通常,每个字节由 2 个十六进制数字表示,因此,如果您的十六进制字符串中有奇数个数字,则说明它有问题。您可以尝试在开头用 0 填充它,例如:

String hexImage ="0xFFD8FFE000104A46494600010200006400640000FFEC00114475636B79000100040000003C...";
if(hexImage.length()%2 == 1)
hexImage = "0x0" + hexImage.substring(2);

或者在最后,比如这样:

String hexImage ="0xFFD8FFE000104A46494600010200006400640000FFEC00114475636B79000100040000003C...";
if(hexImage.length()%2 == 1)
hexImage += "0";

然而,这并不能保证产生正确的图像。

总的来说,你应该检查你是如何得到你的十六进制字符串的。正确的字节序列应始终包含偶数个十六进制数字。

编辑:此外,正如 Peter Lawrey 在他的评论中指出的那样,您应该检查 decode 方法是否期望 0x 在字符串。

关于java - 十六进制字符串到图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10143135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com