摘要: 1.字节序定义:是指整数在内存中保存的顺序。2.字节序种类:a.Little endinan 低位存储在内存的低地址,高位存储在内存的高地址;b.Big endian 高位存储在内存的低地址,低位存储在内存的高地址;3.例子:DWORD dwCount = 0x01020304;这样的一个双字节变量在内存中如下分布0013FF70 04 03 02 01(注:实验结果取之 XPSP3 VC6.0,说明我的机器是Little endinan序)而如果是Big endian序的话,应该是0013FF70 01 02 03 04。用的比较多的x86系列的CPU,都是Little endinan序的。 阅读全文
posted @ 2012-11-25 23:32 Clin 阅读(3689) 评论(0) 推荐(0) 编辑
摘要: 1.授时服务器utcnist.colorado.edu(IP:128.138.140.44)stdtime.gov.hk(IP:210.0.235.14)2.网络字节序和本机字节序的转换htons:把unsigned short类型从主机序转换到网络序htonl:把unsigned long类型从主机序转换到网络序ntohs:把unsigned short类型从网络序转换到主机序ntohl:把unsigned long类型从网络序转换到主机序3.授时服务器返回的事格林尼治时间,中国是东8区。4.相关代码: 1 #define HIGHTIME 21968699 // 21968708 // J 阅读全文
posted @ 2012-11-25 23:17 Clin 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 问:有人告诉我不能在printf中使用%lf。为什么printf()用%f输出double型,而scanf却用%lf呢?答:printf的%f说明符的确既可以输出float型又可以输出double型。根据“默认参数提升”规则(在printf这样的函数的可变参数列表中,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到双精度数。参见问题15.2。对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升。(通过指针)向float存储和向double存储大不一样,因此,scanf区别%f和%lf。下表列出了printf和scanf对 阅读全文
posted @ 2012-11-25 22:51 Clin 阅读(471) 评论(0) 推荐(0) 编辑
摘要: 环境vs20081.把WinSock2.h头文件包含进来;2.把Ws2_32.lib链接库加进来;3.相关代码: 1 void DoSocket() 2 { 3 WSADATA wsaData; 4 WSAStartup(MAKEWORD(2, 0), &wsaData); 5 SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 6 SOCKADDR_IN sa; 7 sa.sin_family = AF_INET; 8 9 sa.sin_port = htons(IPPORT_SM... 阅读全文
posted @ 2012-11-25 21:08 Clin 阅读(181) 评论(0) 推荐(0) 编辑