在Java中使用无符号整数32位?

在Java中使用无符号整数32位?,java,char,bit,unsigned,Java,Char,Bit,Unsigned,可能重复: 我想用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 - 0x289

可能重复:

我想用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[]中分配\0x80? 如何在java((uint32_t))中解释这种类型的强制转换


非常感谢

Type
int
是4个字节,即java中的32位。因此,C中的常规32位int可以在java中转换为常规int


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

Type
int
是4个字节,即java中的32位。因此,C中的常规32位int可以在java中转换为常规int


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

java中没有无符号32位整数。您必须使用long(带符号的64位),而数组在Java中不能被视为指针——您必须使用显式数组索引(还要注意,在Java中字符是16位的),并且您不能使用强制转换在继承中不相关的类型之间进行转换。(因此,基本上你需要先学习Java,然后以不同的方式重写算法。)Java中没有无符号32位int。你必须使用long(有符号64位)来代替。数组不能被视为Java中的指针——你必须使用显式数组索引(还要注意,在Java中字符是16位的。)您不能使用强制转换在继承中不相关的类型之间进行转换。(因此,基本上您需要先学习Java,然后以不同的方式重写算法。)“包含8个字节的long”?我理解正确吗?long是64位的。起初我没有理解它,但在阅读了那篇文章之后,它是有意义的。这篇文章还使用了“&0xFFFFFFFFFFL”以正确转换为long。int是32位的,long是64位的,在c uint32\u t中是32位的。long和uint32\u t之间的关系是什么?因为在最终结果中,如果我总共有8个字节的数据,那么它将增加到16个字节。仅供参考,未签名到java文章的URL已更改。新URL是:”包含8个字节的long?我理解正确吗?long是64位。起初我没有理解它,但在读了那篇文章之后,它是有意义的。而且这篇文章使用了“&0xffffffffL”“为了正确地转换为long。int是32位的,long是64位的,在c uint32\u t中是32位的。long和uint32\u t之间的关系如何?因为在最终结果中,如果我总共有8字节的数据,那么它将增加到16字节。仅供参考,未签名到java文章的URL已更改。新URL是:
char[] tab = new char[64];

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