在Java中使用Unsigned int 32位?

时间:2012-08-01 12:18:40

标签: java char bit unsigned

  

可能重复:
  Converting 32-bit unsigned integer (big endian) to long and back

我想在Java中翻译这个表达式

char tab[100];
tab[10] = '\xc0';

tab[48] = '\x80';

uint32_t w = 0x67452301;

uint32_t x = 0xefcdab89;

uint32_t y = 0x98badcfe;

uint32_t z = 0x10325476;

a = ((b & c) | (~b & d)) + (*(uint32_t*)(tab+0x00)) + a - 0x28955B88;

a = ((a << 0x07) | (a >> 0x19)) + b;

我试过这个但是......

char[] tab = new char[64];

 tab[10] = (char) 0xc0; 
 tab[48] = (char) 0x80; 

但是值不正确,是否有另一种方法在char []中分配\ 0x80? 我怎样才能在java中解释这种类型的转换((uint32_t ))?

非常感谢!

1 个答案:

答案 0 :(得分:5)

类型int是4个字节,即java中的32位。因此,来自C的常规32位int可以在java中被翻译为常规int。

java语言不支持unsigned int,因此请使用包含8个字节的long来表示来自C的无符号32位变量。