我设法通过读取IPv4方法来获得unsigned long int八位字节表示(BE),并且我设法读取了有符号整数如何使用MSB作为符号指示符,这使得00 00 00 00为0,而7F FF FF FF是2147483647.将签名的long int(32bit)存储为4个八位字节?
但我不能管理如何做同样的签名长整数?
#include <stdio.h>
#include <string.h>
int main (void)
{
unsigned long int intu32;
unsigned char octets[4];
intu32 = 255;
octets[3] = (intu32) & 255;
octets[2] = (intu32 >> 8) & 255;
octets[1] = (intu32 >> 16) & 255;
octets[0] = (intu32 >> 24) & 255;
printf("(%d)(%d)(%d)(%d)\n", octets[0], octets[1], octets[2], octets[3]);
intu32 = (octets[0] << 24) | (octets[1] << 16) | (octets[2] << 8) | octets[3];
printf("intu32:%lu\n", intu32);
return 0;
}
由于提前, Doori酒吧
你会得到什么输出?你在期待什么? – Vicky 2010-04-16 10:31:31
嘿Vicky,感谢您的快速响应。样本的输出对于有符号和无符号都是准确的,显然我的印象是这种方法只对无符号的32位整数有效,而展开解释说同样的方法对于有符号和无符号都是相关的。 – 2010-04-16 13:09:03