Zbarcea Christian
Zbarcea Christian

Reputation: 9548

Java byte to int

I know there are N threads for this question but some people are using different and different methods to convert a byte to int. Is this correct what am I writing? Hex to int or hex to decimal? Which one is the correct?

Anyway, why I'm getting 4864 instead of 19 ?

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

Upvotes: 0

Views: 503

Answers (2)

khanmizan
khanmizan

Reputation: 936

you are getting 4864 as a result because 4864 is 0x1300 in hex. if you are expecting 19(0x13) as result then I guess you are trying to do circular shifting.

you can do that using writing like that,

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

Upvotes: 2

Jon Skeet
Jon Skeet

Reputation: 1500515

Is this correct what am I writing?

The code you've posted does implicit conversion of int to String, but that will display it in decimal. It's important to understand that a number isn't in either hex or decimal - it's just a number. The same number can be converted to different textual representations, and that's when the base matters. Likewise you can express the same number with different literals, so these two statements are exactly equivalent:

int x = 16;
int x = 0x10;

Anyway, why I'm getting 4864 instead of 19

Because you're explicitly shifting the value left 8 bits:

buffer[51] << 8

That's basically multiplying by 256, and 19 * 256 is 4864.

Upvotes: 4

Related Questions