读书人

好手过来帮忙解释这个函数

发布时间: 2012-09-07 10:38:15 作者: rapoo

高手过来帮忙解释这个函数

C/C++ code
char* UI32ToBytes(char* buf, unsigned int val){    buf[0] = (char)(val >> 24) & 0xff;    buf[1] = (char)(val >> 16) & 0xff;    buf[2] = (char)(val >> 8) & 0xff;    buf[3] = (char)(val) & 0xff;    return buf + 4;}

各位大神来指点一下,这个函数到底实现了什么功能,具体是怎么实现的啊?
buf[0] = (char)(val >> 24) & 0xff;
这一句是啥意思啊?

[解决办法]
这个函数是向一个buf中写一个int值, 高位在前低位在后

buf[0] = (char)(val >> 24) & 0xff;
这一行就是把val的高位字节放到buf的前面
[解决办法]
buf[0] = (char)(val >> 24) & 0xff里的>>是右移的意思,即把val右移24位,如0xF1234567右移24位后就变为0x0000 000F,这是按移出的位丢掉的方法。再与0Xff逐位相与。
[解决办法]
int a = 0x12345678 ;
char c = a>>24 & 0xff; //c=0x12 右移后 &0xff取这个int的低8位
[解决办法]
比如一个int是 0x11223344, 在内存中其实是是 44 33 22 11,现在要把它放成 11 22 33 44

buf[0] = (char)(val >> 24) & 0xff; // 11
buf[1] = (char)(val >> 16) & 0xff; // 22
buf[2] = (char)(val >> 8) & 0xff; // 33
buf[3] = (char)(val) & 0xff; // 44
[解决办法]
探讨

比如一个int是 0x11223344, 在内存中其实是是 44 33 22 11,现在要把它放成 11 22 33 44

buf[0] = (char)(val >> 24) & 0xff; // 11
buf[1] = (char)(val >> 16) & 0xff; // 22
buf[2] = (char)(val >> 8)……

[解决办法]
探讨
谢谢各位的回复啊
不过各位高手说的太笼统了,可以把“<<”的具体操作给说一下么?谢谢

[解决办法]
将buf指针向后移动四个单位,使其指向数组的结尾

读书人网 >C语言

热点推荐