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

4

我想要获取这个:

byte dec = 10;

转换为:

byte hex = 0x0A;

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


我认为我找到了解决方案:byte hex = 0x00; for(byte i=1; i<dec+1; i++) {++hex} - KeksArmee
4
“十进制字节”或“十六进制字节”并不是真正存在的概念,它们只是数字。你可以使用byte hex = dec;,这将会得到与你的循环完全相同的结果。 - Jon Skeet
2个回答

9

一个字节(byte)就是内存中的一串比特(bits)-- 它的可视化表示并不重要,两种不同的表示方法可能意味着相同的含义。如果你只需要一个十六进制字面量(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

@KeksArmee 我不确定你的意思。你想以十六进制格式显示一个字节吗? - arshajii
你说Java中没有十六进制/十进制字节。起初我想将它存储为十六进制,但由于不可能,我必须将其显示为十六进制字符串。所以,是的。 - KeksArmee
@KeksArmee 很高兴我能帮到你。别忘了接受答案 - arshajii

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;
        }
    }
}

希望我有所帮助。


他可能指的是十六进制系统中的"A",在十进制中表示10。 - arshajii
我同意。然而,由于这些在字节原语中是相同的,我提供了任何其他可能的解释。也许 O.P. 希望将字节表示为 'A'。 - Drifter64
抱歉,我的意思是0x0A而不是A。 - KeksArmee
1
好的。那么,正如arshajii所说,这两个值是相同的,将“0x0A”输入为字节的值只是为了方便。Java将其理解为一个值为“10”的整数。 :) - Drifter64

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接