改变位顺序

时间:2013-08-07 13:15:46

标签: java android hex bit

我有一个将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减去1来获取9830,将最后一位更改为获取值55705十六进制为D999

我最后怎么做?改变位?

C代码:

if (int_value < 0) {

        c2_value = int_value * -1;
        c2_value = c2_value - 1;
        c2_final = ~c2_value;
    }

1 个答案:

答案 0 :(得分:1)

java.lang.Integer提供toHexString()方法,将指定的整数转换为十六进制字符串表示形式。

您可以使用以下内容。

Log.d(TAG, java.lang.Integer.toHexString(-9831));

这将为您提供输出

08-07 18:53:57.643: D/Home(31698): ffffd999

获取输出,请使用以下代码。

String strHex = java.lang.Integer.toHexString(-9831);
if (strHex.length() > 4)
    Log.d(TAG, strHex.substring(4));
else
    Log.d(TAG, strHex);