我有一个函数将int转换为十六进制。在这个函数中,我得到一个0到100之间的seekbar值。然后我做了一些改变,最后我将它转换为十六进制。更改位的顺序
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。我认为他只是将一个已签名的值转换为未签名的值或其他值。 – masmic
你有没有试过我在回答中提供的代码? –