基本上,我想要做的是取一个十进制整数,将其转换为十六进制,然后分开字节。我的理解是ByteBuffer是最好的方法。整数不会超过65535,所以十六进制数保证是2个字节。例如,我有一个整数40000(十六进制值9C40)。所以,我有:Java - ByteBuffer和十进制和十六进制之间的转换
int n1 = 40000;
ByteBuffer b = ByteBuffer.allocate(2);
b.putInt(n1);
不过,我得到以下错误,当我运行程序:在线程 异常“主要” java.nio.BufferOverflowException
我在做什么错? 9C40不应写入“b”(b [0] = 9C和b [1] = 40)?如果我想将存储在b [0](即9C)中的值转换为十进制(即156),那么我会使用下面的代码吗?
int n2 = b.get(0));
谢谢!
我认为文件说得非常清楚putInt需要4个字节。 https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html#putInt(int) – Surely
代码中没有十六进制转换,而“ByteBuffer”不是十六进制的解决方案-encoding。不清楚你在问什么。 – EJP