我正在处理一些C源代码,我试图将其转换为Javascript,但在这一行遇到了麻烦
char ddata[512];
*(unsigned int*)(ddata+0)=123;
*(unsigned int*)(ddata+4)=add-8;
memset(ddata+8,0,add-8);
我不确定这里到底发生了什么,我知道他们正在将char转换为一个未签名的int,但是ddata+0
在这里做什么是什么?谢谢。
你不能说
这是因为在铸造的行为char*
到unsigned*
是不确定的 ,除非指针开始作为一个unsigned*
,它在你的情况并非如此。
ddata + 0
等价于ddata
。
ddata + 4
等价于&ddata[4]
,即数组第5个元素的地址。
对于它的价值,看起来C程序员正在尝试将几个unsigned
文字序列化为字节数组。但是代码很乱。除了我已经说过的内容外,他们似乎还假设aunsigned
占用了4个字节,而事实并非一定如此。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句