Java:只需将十进制字节转换为十六进制字节

时间:2014-02-12 15:44:43

标签: java hex byte decimal

我想得到这个:

byte dec = 10;

到此:

byte hex = 0x0A;

但我无法在任何地方找到解决方案。 我总是看到String s = Integer.parseInt(... 但我不希望String作为结果。 我想要byte

2 个答案:

答案 0 :(得分:9)

字节只是内存中的一系列位 - 它在视觉上如何表示并不重要,两个不同的表示可能意味着相同的事情。如果你想要的只是 hex literal ,你可以试试这个:

byte dec = 10;
byte hex = 0xA;  // hex literal

System.out.println(dec == hex);
true

请注意dechex完全相同; 100xA代表相同的数字,只是在不同的基础上。

如果要以十六进制显示字节,可以使用Integer.toHexString()

byte dec = 10;
System.out.println(Integer.toHexString(dec));
a

答案 1 :(得分:0)

不幸的是,你不能把“A”作为一个字节。字节是数字的扩展,因此您只能在此处保存数值。您可能希望做的是返回表示十六进制或字符串的字符。

这样的东西可能有用:

package sandbox;

public class Sandbox
{

    public static void main(String[] args)
    {
        byte value = 1;
        char charValue = getHex(value);
        System.out.println(charValue);

    }

    private static char getHex(byte b)
    {
        Byte bObj = new Byte(b);
        if (b < 10) { return bObj.toString().charAt(0); }
        else
        {
            char hexChar = (char)(bObj.toString().charAt(1) + 'A' - '0');
            return hexChar;
        }
    }
}

我希望我能提供帮助。