字节序处理函数

首先在msdn上查找htons、 htonl、 ntohl、 ntohs几个函数的说明介绍,它们是用来转换本地计算机和网络计算机字节序的;

那么,它们一定可以用来出来字节序问题(抛开网络流不谈):

 

#include <stdio.h>
#include <Winsock2.h>

#pragma comment(lib, "Ws2_32.lib")


void main()
{
	unsigned long u = ntohl(0x11223344);
	printf("%x\n", u); //u == 0x44332211


}

 

引申:

1. 在网络上传输字节流时,比如两台x86计算机成熟时,不管两台计算机同时安装的时dos、linux、windows、wince等等,或者分别安装不同的系统,只要cpu平台相同,那么按照透明的格式传输即可,就是用不到上述这几个函数,怎么样的方式发送,怎么样的方式接收,就能保证数据是正确的;

(跨cpu平台的没有试验过,不好说)

 

2. 判断小端还是大端的函数:

bool am_little_endian ()
{
 unsigned short i=1;
 return (int)*((char *)(&i)) ? true : false;
}
int main()
{
  if(am_little_endian())
 {
           printf("本机字节序为小段序!\n");
 }
 else
 {
          printf("本机字节序为大段序!\n");
 }
        return 0;
}


 

 


 

你可能感兴趣的:(windows,linux,网络,dos,平台,WinCE)