关于类型的定义的小问题,请大家指点
看见一个代码是这样赋值的
DWORD = 0x62626262;
这样是4个b,但是DWORD是unsigned long,这样的话就是无符号长整数
如果用16进制转10进制0x62626262 应该等于1650614882那么换句话说如果我直接给这个dword这样赋值是不是也是等于4个b
如果不是谁能给讲讲这其中的原因
因为我的理解长整数应该是个数字
那4个b又不是数字为什么能放到dword里面去
希望高手能浅显易懂的讲解一下
[解决办法]
4字节宽度 表示有4*8=32个bit 也就是32个0和1
4个0和1组成一个16进制
也就是说 4字节宽度 可以存放8位的16进制数0x62626262刚好8位 没问题。
[解决办法]
字符b的ASCII码是0x62
4个b在内存是 62 62 62 62
char sz[4] = {'b', 'b', 'b', 'b'};
DWORD dw = *(DWORD*)sz;
此时dw等于0x62626262
DWORD dw = 0x62626262; // 这个和DWORD dw = 1650614882;等价的
char sz[4];
*(DWORD*)sz = dw;
此时sz就是4个'b'
不要想的太复杂,当成二进制数据看待就行了
这可能只是设计上的技巧,为了提高效率
[解决办法]