实在无法理解 发个帖问问
遇到这样一个代码
string s;
unsigned long i=0x12345;
s.append((char*)&i,4);
什么意思,看不懂。。。。。
[解决办法]
把i取地址后强制转换成char*,加在字符串后面
改成unsigned long i=0x31323334;运行一下就清楚了
[解决办法]
append这个函数需要一个 char*类型的指针。
所以,强制转换。
这个代码的目的是让string里面的字符串内容是 i的二进制数据
[解决办法]
都是在内存中存入数据,内存都同由字节组成,unsigned long类型占四个字节,相当把内存中数据复制过去
[解决办法]
指针没有属性,你怎么转就怎么取
比如楼上的
unsigned long i=0x31323334 一共是4个字节1
你用 unsigned long *pL = & i;
那么 *pl 就等于 0x31323334
如你用 char *pc = (char *)&i;
那么 pc[0] == 'A'; //A16进制是31吧
那么 pc[1] == 'B';
那么 pc[2] == 'C';
那么 pc[3] == 'D';
就看你这个内存怎么平分了
[解决办法]
string s;
unsigned long i=0x12345;
//比如i对应在内存地址0x40001000处的四个字节45 23 01 00(小端存储)
s.append((char*)&i,4);
//将'\x45','\x23','\x01','\x00'四个char append到s里