我有一个将 int 转换为十六进制的函数。在这个函数中,我得到了一个介于 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
为 positve 9831
,然后减去 1 以获得9830
,最后,更改位以获得55705
十六进制值D999
。
我该怎么做这最后一件事?改变位?
C中的代码:
if (int_value < 0) {
c2_value = int_value * -1;
c2_value = c2_value - 1;
c2_final = ~c2_value;
}