1

可能重复:
将 32 位无符号整数(大端)转换为 long 并返回

我想用 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 )) 中解释这种类型的转换?

非常感谢 !

4

1 回答 1

5

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

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

于 2012-08-01T12:22:55.410 回答