小编Cra*_*art的帖子

char*(数组)转换为unsigned long + 1?

我正在尝试将一些C代码移植到Java,但是我一直在努力弄清楚这些代码行的作用.

注意:rawEntry是类型的,char*并且看起来像是这样分配的12字节长

char *rawEntry = (char*)malloc(0x000c);
Run Code Online (Sandbox Code Playgroud)
unsigned long *l;
unsigned long offset;

// ...

l = (unsigned long*) rawEntry + 1;
offset = ntohl(*l);
Run Code Online (Sandbox Code Playgroud)

据我所知,它需要数组的前四项,并将它们组合在一起形成一个长的,但是我在java中的尝试并不成功.

offset = (rawEntry[0] << 24) +
         (rawEntry[1] << 16) +
         (rawEntry[2] << 8) +
         (rawEntry[3]) +
         1;
Run Code Online (Sandbox Code Playgroud)

当出现以下数组时,

1 0 0 0 0 0 0 0 0 0 11 -38
Run Code Online (Sandbox Code Playgroud)

C代码输出3034作为偏移量
My Java代码输出16777217,如果我翻转字节序则输出1

c java arrays porting casting

4
推荐指数
1
解决办法
85
查看次数

标签 统计

arrays ×1

c ×1

casting ×1

java ×1

porting ×1