关于vc++里面htonl()函数的使用疑惑#include #include void main(){struct sockaddr_in myad;memset(&myad,0,sizeof(struct sockaddr_in));myad.sin_family=AF_INET;myad.sin_port=htons(4367);myad.sin_addr.s_addr=htonl(0x40);cout

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 19:21:45
关于vc++里面htonl()函数的使用疑惑#include #include void main(){struct sockaddr_in myad;memset(&myad,0,sizeof(struct sockaddr_in));myad.sin_family=AF_INET;myad.sin_port=htons(4367);myad.sin_addr.s_addr=htonl(0x40);cout

关于vc++里面htonl()函数的使用疑惑#include #include void main(){struct sockaddr_in myad;memset(&myad,0,sizeof(struct sockaddr_in));myad.sin_family=AF_INET;myad.sin_port=htons(4367);myad.sin_addr.s_addr=htonl(0x40);cout
关于vc++里面htonl()函数的使用疑惑
#include
#include
void main()
{
struct sockaddr_in myad;
memset(&myad,0,sizeof(struct sockaddr_in));
myad.sin_family=AF_INET;
myad.sin_port=htons(4367);
myad.sin_addr.s_addr=htonl(0x40);
cout

关于vc++里面htonl()函数的使用疑惑#include #include void main(){struct sockaddr_in myad;memset(&myad,0,sizeof(struct sockaddr_in));myad.sin_family=AF_INET;myad.sin_port=htons(4367);myad.sin_addr.s_addr=htonl(0x40);cout
htonl就是把本机字节顺序转化为网络字节顺序
所谓网络字节顺序(大尾顺序)就是指一个数在内存中存储的时候“高对低,低对高”(即一个数的高位字节存放于低地址单元,低位字节存放在高地址单元中).但是计算机的内存存储数据时有可能是大尾顺序或者小尾顺序.
先举个例子:
int a = 0x403214;
int b = htonl(a);
我在VC++6.0调试这段代码,发现
&a的值为:0x0012ff44
其中0x0012ff44、0x0012ff45、0x0012ff46、0x0012ff47这四个单元的值依次为:14、32、40、00,即0x403214这个数的高位部分存放在高位地址中,低位部分存放在低位地址中,即小尾顺序.
&b的值为:0x0012ff40
其中0x0012ff40、0x0012ff41、0x0012ff42、0x0012ff43这四个单元的值依次为:00、40、32、14,即把原数0x403214的高位部分存放在低位地址中,低位部分存放在高位地址中.
由此可见,如果一个数以小尾顺序存储,经htonl函数调用后这个数的高地位字节会完全颠倒过来成为一个新的数.这个新的数在机器内部其实还是以小尾顺序存储的,但是相对于原来的数而言相当于是变成大尾顺序的了.
long型的0x40写完整为:0x 00 00 00 40,共四个字节,调用htonl后四个字节颠倒顺序,为0x 40 00 00 00.
同样,0x40 00 00 00调用htonl后变为0x 00 00 00 40,即0x40
如果我的回答有问题,可以HI我,我们接着讨论

关于vc++里面htonl()函数的使用疑惑#include #include void main(){struct sockaddr_in myad;memset(&myad,0,sizeof(struct sockaddr_in));myad.sin_family=AF_INET;myad.sin_port=htons(4367);myad.sin_addr.s_addr=htonl(0x40);cout 怎样在VC里使用图形函数 VC里面 %. 使用VC++6.0,利用C图形函数作一个苹果的图形的程序 vc++里面ON_COMMAND和ON_MESSAGE的区别 VC中使用什么函数来代替window等函数呢?我的意思是在TC下能使用的函数而在VC里却没有办法用,但却有相对的函数来代替比如说:在TC里的delay()使用VC里的windows.h的Sleep()函数可以得到相同的效 VC中绘图的函数有哪些 VC++中fwrite函数的用法是什么? 关于VC 物体移动的高级问题! vc++6.0怎么使用求c++6.0的教程 设计一个点类CPoint,编写函数计算两点之间的距离(要求使用友员成员函数)用C++编写,编译环境是VC++6.0 有没有详细介绍VC++基础的书籍有没有这样的书籍:系统全面介绍VC++有多少个类,都是什么?都是做什么用的?每个类里面有什么成员函数,都有什么作用? 下面关于EXCEL中公式的说法,错误的是A .公式需要使用公式编辑器创建 B.公式都是以等号开头 C.公式里面可以使用函数 D.公式里面可以使用单元格地址 vc++ 应用纯虚函数的使用,定义几个派生类如三角形,矩形,圆形等,求出所有形状的总面积. 如何在VC中定义新的函数 TRACE在vc里面是什么意思 请教VC画图函数请问在VC中画图的函数,就是那些画线.圆,矩形,等等..越多越好.. 关于VC++.讲讲这3个符号的作用