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; 

しかし、値は正しいものではありません。\0x80 を char[] に割り当てる別の方法はありますか? Java ( (uint32_t ))でこの種のキャストを解釈するにはどうすればよいですか?

どうもありがとう !

4

1 に答える 1

5

タイプintは 4 バイト、つまり Java では 32 ビットです。したがって、C の通常の 32 ビット int は、Java では通常の int に変換される場合があります。

Unsigned int は Java 言語でサポートされていないためlong、C からの符号なし 32 ビット変数を表すには 8 バイトを含むを使用します。

于 2012-08-01T12:22:55.410 に答える