【问题标题】:Convert int to hex byte value将 int 转换为十六进制字节值
【发布时间】:2015-05-26 17:09:49
【问题描述】:

我想读取 NFC 标签的分块数据。命令为字节数组,需要块号。

public static byte[] readSingleBlockCmd(int blockNo) {
        byte[] cmd = new byte[3];
        cmd[0] = (byte) 0x02;//flag
        cmd[1] = (byte) 0x23;//cmd
        cmd[2]= (byte)blockNo;

        return cmd;

    }
  • 如何将 int blockNo 更改为其十六进制值,可以转换为字节。我想要字节值而不是字节 []

我已经浏览了以下链接

Convert integer into byte array (Java)

How to autoconvert hexcode to use it as byte[] in Java?

Java integer to byte array

谢谢!

【问题讨论】:

  • 这些链接没有回答您的问题吗?如果没有,请更新您的问题,具体说明您遇到问题的原因和问题。
  • 让我们澄清一些事情:“十六进制”是一种编码,专门用于如何将数字写为字符串。 0x25 是十六进制编码的。但数字本身仍然是 37(以 10 为基数),它是一个 int 或一个字节或其他什么。你在这里没有使用任何字符串,所以请忘记你问题的“十六进制”部分,请再问一次,因为我不知道你在想什么。

标签: java hex byte bytearray


【解决方案1】:

可以使用以下行将整数(十进制)转换为十六进制:

String hex = Integer.toHexString(blockNo);

然后将其转换为字节,您可以使用

Byte.parseByte(hex,16);

但如果您只想将参数转换为字节:

Byte.parseByte(blockNo);

我猜也可以。如果我错了,请纠正我。

【讨论】:

  • 没错,它应该什么都不做。它与我提到的最后一行相同。但是由于他想要一个十六进制,我建议他可以使用内置函数来转换为字符串。
猜你喜欢
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2013-09-12
  • 2015-09-17
  • 1970-01-01
  • 2018-01-22
相关资源
最近更新 更多