【问题标题】:Java: Simply convert a decimal byte to a hexadecimal byteJava:只需将十进制字节转换为十六进制字节
【发布时间】:2014-03-11 01:18:49
【问题描述】:

我想得到这个:

byte dec = 10;

到这里:

byte hex = 0x0A;

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

【问题讨论】:

  • 我想我找到了解决方案:byte hex = 0x00; for(byte i=1; i<dec+1; i++) {++hex}
  • 没有“十进制字节”或“十六进制字节”之类的东西。这只是一个数字。您可以使用byte hex = dec;,它会给出与您的循环完全相同的结果。

标签: java hex byte decimal


【解决方案1】:

byte 只是内存中的一个位序列——它在视觉上如何表示并不重要,两种不同的表示可能意味着同一件事。如果你想要的只是一个 hex 文字,你可以试试这个:

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

System.out.println(dec == hex);
真的

请注意,dechex 在这里完全相同; 100xA 代表同一个数字,只是基数不同。

如果你想以十六进制显示一个字节,你可以使用Integer.toHexString():

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

【讨论】:

  • @KeksArmee 我不确定你的意思。你想以十六进制格式显示一个字节吗?
  • 你说java中没有hexa/dec字节。起初我想以十六进制存储它,因为这是不可能的,我必须将它以十六进制显示为字符串。所以,是的。
  • @KeksArmee 很高兴我能帮上忙。别忘了accept an answer
【解决方案2】:

不幸的是,您不能将“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。
  • 我同意。但是,由于这些在字节原语中是相同的,因此我提供了任何其他可能的解释。也许 O.P. 希望将字节表示为“A”。
  • 对不起,我的意思是 0x0A 而不是 A
  • 很公平。然后,正如 arshajii 所说,这两个值是相同的,输入“0x0A”作为一个字节的值只是为了方便。 Java 将其理解为值为“10”的整数。 :)
猜你喜欢
  • 2013-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 2017-08-23
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
相关资源
最近更新 更多