繁体   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