基本上,我想要做的是取一個十進制整數,將其轉換爲十六進制,然後分開字節。我的理解是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