我需要轉換成十進制數值像正確十進制值轉換爲字節值
int dec = 129;
成字節值一樣
byte frame2 = (byte) 129;
但正如你可能已經猜到了,把它轉換成一個意外的值。我希望字節值是129而不是-127(frame2的值)。
你怎麼能在Java中實現它?我希望有一個解釋。
謝謝
我需要轉換成十進制數值像正確十進制值轉換爲字節值
int dec = 129;
成字節值一樣
byte frame2 = (byte) 129;
但正如你可能已經猜到了,把它轉換成一個意外的值。我希望字節值是129而不是-127(frame2的值)。
你怎麼能在Java中實現它?我希望有一個解釋。
謝謝
你不能也很可能你不需要。根據定義,一個字節是-128到127。但是,如果您需要編碼,則可以將任何256個不同的值存儲在一個字節中。
byte b = (byte) 129;
int i = b & 0xff; // == 129
或
byte b = (byte) (129 + Byte.MIN_VALUE);
int i = b - Byte.MIN_VALUE; // also 129.
+1我會說這個字節是正確的,它既是-127也是129,這更多的是表示/使用字節的問題。 –
謝謝,我解決了它 – Jason
我需要轉換成十進制數值像
停在那兒。沒有「十進制值」這樣的東西。有值是2s補碼,並有小數點表示。
int dec = 129;
這將被存儲爲129(10),或81(16)。
成字節值一樣
byte frame2 = (byte) 129;
的,其結果將是-127,
因爲字節在Java中籤署,您的值設置標誌位。
如果要使用該值,就像是129
一樣,請使用(frame2 & 0xff).
但是,根本不需要那麼做。
您的問題實際上是關於Java中字節的符號擴展:它與小數完全無關。
不要使用字節:http://docs.oracle.com/javase/6/docs/api/java/lang/Byte.html –
@DekDekku這會慢很多,但它會如何幫助?你能證明你的意思嗎? –
我只是說不要使用字節。也不是Byte,這對於這個事情來說是完全一樣的。 –