簡體   English   中英

Java字節到整數

[英]Java byte to int

我知道這個問題有N個線程,但是有些人正在使用不同的方法將字節轉換為int。 這是我寫的正確嗎? 十六進制到整數還是十六進制到十進制? 哪一個是正確的?

無論如何,為什么我得到4864而不是19?

byte[] buffer = ....
buffer[51] = 0x13;
System.out.println( buffer[51] << 8 );

這是我寫的正確嗎?

您發布的代碼會將int隱式轉換為String ,但是將以十進制顯示。 重要的是要了解數字不是十六進制或十進制,它只是一個數字。 相同的數字可以轉換為不同的文本表示形式,這就是基礎的重要性。 同樣,您可以使用不同的文字來表示相同的數字,因此這兩個語句是完全等效的:

int x = 16;
int x = 0x10;

無論如何,為什么我得到4864而不是19

因為您要明確將值左移8位:

buffer[51] << 8

基本上乘以256,而19 * 256為4864。

結果得到4864,因為4864的十六進制為0x1300。 如果您期望結果為19(0x13),那么我想您正在嘗試進行循環移位。

你可以這樣寫

  /*hex 0x13 (19 in decimal) is assigned to buffer[51] as int*/
  buffer[51] = 0x13;  
  System.out.println( Integer.rotateRight(buffer[51], 8));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM