在Java中使用Unsigned int 32位?
可能重复:
将32位无符号整数(大端)转换为long和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 <> 0x19)) + b;
我试过这个但是……
char[] tab = new char[64]; tab[10] = (char) 0xc0; tab[48] = (char) 0x80;
但是值不是正确的,是否有另一种方法在char []中分配\ 0x80? 我怎样才能在java中解释这种类型的转换( (uint32_t ))?
非常感谢 !
int
类型是4个字节,即java中的32位。 因此,来自C的常规32位int可以在java中转换为常规int。
java语言不支持unsigned int,因此请使用包含8个字节的long
来表示来自C的无符号32位变量。