gpt4 book ai didi

java - 将两个整数附加到十六进制,每个整数代表一个半字节。数字

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

我为 JPEG 编码器编写比特流,我遇到了这个问题:

我在 int[] 数组中为 AC 余弦系数(量化后)构建了对。每对:(JPEG 标准后的零点数/系数类别)。 在这两个整数中,我必须形成一个十六进制数,其中一个整数代表一个半字节。十六进制数字稍后必须进行霍夫曼编码。示例:我的对是 (4,5),我需要它作为 (0x45)。

我该怎么做?我的方法是将整数转换为字符串,附加字符串,然后将它们作为一个整数取回。然而,编译器说

Exception in thread "main" java.lang.NumberFormatException: For input string: "0fffffff5"

//Get a Pair (Numbers of Zeros, Coefficient)
int[]singlePair_ref = acPairs_ref.get(i);

//Convert to Wrapper Class Integer
Integer firstNibble_ref = ((Integer)singlePair_ref[0]);
Integer secondNibble_ref = ((Integer)singlePair_ref[1]);

//Convert to String
String firstNibbleString_ref = firstNibble_ref.toHexString(singlePair_ref[0]);
String secondNibbleString_ref = secondNibble_ref.toHexString(singlePair_ref[1]);

//Append Strings
String byteValueString_ref = firstNibbleString_ref+secondNibbleString_ref;
Integer byteValue_ref = 0;

//Convert the new formed "one" (formed out of two) Number back to Integer
byteValue_ref.parseInt(byteValueString_ref); //Line throws Exception

希望你能帮助我。多谢!丹尼尔

编辑:如果我这样做

YACforHuffman_ref[i] = (singlePair_ref[0] << 4) | singlePair_ref[1];

输出是十进制 (3,6) 变为 54。如果我将此等式的结果转换为

String YACforHuffman_ref = Integer. Integer.toHexString((singlePair_ref[0] << 4) |    singlePair_ref[1];

就像 Mike 在上面所做的那样,如果值大于 9(值 A-F),我会遇到麻烦,现在我知道你的意思了@Mike,抱歉我一开始没明白。我该如何解决这个问题?

最佳答案

迈克是对的。如果你想将结果用作数字而不是字符串,你只需要一个数字表达式。适应您的代码示例:

int[] singlePair_ref = acPairs_ref.get(i);
int byteValue_ref = (singlePair_ref[0] << 4) | singlePair_ref[1];

首先提供高位半字节。您还可以将结果转换为字节。

--- 费尔达

关于java - 将两个整数附加到十六进制,每个整数代表一个半字节。数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6467557/

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