【发布时间】:2013-08-08 21:21:24
【问题描述】:
我有一个将 int 转换为 hex 的函数。在这个函数中,我得到了一个介于 0 到 100 之间的搜索栏值。然后我进行了一些更改,最后将其转换为十六进制。
private String decimalToHex(int i) {
/**Conversion to decimal of the seekbar's % value*/
int_value = ((i * 20480) / 100) * -1;
int_value = -20480 - int_value;
/**Conversion to hex*/
hex_value = Integer.toString(int_value, 16);
//hex_value = Integer.toHexString(c2_final);
return hex_value;
}
假设int i 的值为 52。这将得到下一个值:int_value = -9831
当我将此值转换为十六进制时,我得到-2667。但这不是我需要的值。
我需要进行转换,将十六进制结果作为“D999”之类的值。
我通过对值进行补码(又名~ 运算符)来获得这个值。
这类似于将值-9831 转换为正值9831,然后减去1 得到9830,最后,更改位以获得值55705,十六进制为D999。
我该如何做最后一件事?改变位?
C 代码:
if (int_value < 0) {
c2_value = int_value * -1;
c2_value = c2_value - 1;
c2_final = ~c2_value;
}
【问题讨论】:
-
-9831是-2667十六进制。目前还不清楚你在问什么,或者你将如何从中获得一些魔法55705/D999。 -
我刚刚在上一篇文章中添加了代码。我需要相同的价值观,所以如果他明白了,我需要得到那个。当他这样做
c2_final = ~c2_value;时,他将 9830 值传递给 55705。当我这样做时,我将 9830 值返回到 -9380。我认为他只是将有符号值转换为无符号值或其他值。 -
你试过我在回答中提供的代码吗?
-
在您的回答下回答@Chintan Rathod