社区
网络编程
帖子详情
为什么服务器是大端字节序与网络字节序(大端字节序)一样,也需要htons来转化,才能得到正确数据?
mirroCS
2012-08-07 09:46:47
如题!!!
...全文
451
12
打赏
收藏
为什么服务器是大端字节序与网络字节序(大端字节序)一样,也需要htons来转化,才能得到正确数据?
如题!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
IVERS0N
2012-08-08
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
服务器是大端,从网络发过来的数据是大端 就不需要转化了?
引用 1 楼 的回复:
数据并不需要特意去转换大小端,保存通讯2端的大小端一致就行
[/Quote]
对的
mirroCS
2012-08-08
打赏
举报
回复
大哥与数值类型的内存存储方式有什么关系呀?
[Quote=引用 8 楼 的回复:]
具体情况我不加以分析,
如果楼主想知道需不需要转化,
还是自己实验一下,前提是要清楚网络字节序和主机字节序,以及数值类型的内存存储方式
顺便提醒一下,如果你自己传的数据内容,是可以自己定义顺序不用管字节序的
[/Quote]
MFCJCK
2012-08-08
打赏
举报
回复
htons 可以不需要,你应该是其他地方有问题。
zdleek
2012-08-08
打赏
举报
回复
具体情况我不加以分析,
如果楼主想知道需不需要转化,
还是自己实验一下,前提是要清楚网络字节序和主机字节序,以及数值类型的内存存储方式
顺便提醒一下,如果你自己传的数据内容,是可以自己定义顺序不用管字节序的
mirroCS
2012-08-08
打赏
举报
回复
服务器是大端,从网络发过来的数据是大端 还需要转化了?
[Quote=引用 6 楼 的回复:]
服务端和客户端的主机的字节序本身可能不一样,主机和网络字节序的顺序也可能不一样
所以,统一用htons比较方便,不用去考虑字节序问题
[/Quote]
zdleek
2012-08-08
打赏
举报
回复
简单地说,如果接收的数据有错,肯定是你对某些概念理解还不够透彻,所有有处理不当的地方
傻X
2012-08-07
打赏
举报
回复
这跟芯片有关吧。比如X86就是小端的,ARM有些大端,有些小端
Gloveing
2012-08-07
打赏
举报
回复
转成网络字节序是为了考虑不同平台上的使用
ckc
2012-08-07
打赏
举报
回复
按道理是不需要的,不过还是做下比较可靠
ouyh12345
2012-08-07
打赏
举报
回复
数据并不需要特意去转换大小端,保存通讯2端的大小端一致就行
zdleek
2012-08-07
打赏
举报
回复
服务端和客户端的主机的字节序本身可能不一样,主机和网络字节序的顺序也可能不一样
所以,统一用htons比较方便,不用去考虑字节序问题
mirroCS
2012-08-07
打赏
举报
回复
服务器是大端,从网络发过来的数据是大端 就不需要转化了?
[Quote=引用 1 楼 的回复:]
数据并不需要特意去转换大小端,保存通讯2端的大小端一致就行
[/Quote]
计算机
网络
——
网络
字节序
(
大端
字节序
(Big Endian)\小端
字节序
(Little Endian))
网络
字节序
网络
字节序
1、
网络
字节序
(Network Byte Order)和本机转换2、
字节序
转换函数
网络
字节序
1、
网络
字节序
(Network Byte Order)和本机转换 1、
大端
、小端
字节序
“
大端
”和”小端”表示多字节值的哪一端存储在该值的起始地址处;小端存储在起始地址处,即是小端
字节序
;
大端
存储在起始地址处,即是
大端
字节序
;具体的说: ①
大端
字节序
(Big Endian):最高有效位存于最低内存地址处,最低有效位存于最高内存处; ②小端
字节序
(Little Endian):最高有效位
大端
字节序
与小端
字节序
(
网络
字节序
与主机
字节序
)
大端
字节序
与小端
字节序
1. 简介2. 判断机器
字节序
(C/C++)3. 主机
字节序
与
网络
字节序
的转换4. IP地址与
网络
字节序
的转换 1. 简介
字节序
分为
大端
字节序
(big endian)和小端
字节序
(little endian)。
大端
字节序
是指一个整数的高位字节(23 ~ 31bit)存储在内存的低地址处,低位字节(0 ~ 7bit)
大端
小端
字节序
,
网络
字节序
,Intel
字节序
一、
字节序
计算机硬件存储
数据
有两种方式:
大端
字节序
(big endian)和小端
字节序
(little endian)。 小端
字节序
:即低地址存低位字节,或者说在起始地址存放低位字节(Intel的机器都是采用的这种存储方法,因此有时候直接称为Intel
字节序
);
大端
字节序
:即低地址存高位字节,或者说在起始地址存放高位字节(人类读写数值的方法,
网络
字节序
也是这种
字节序
); 注:只有多字节
数据
的存取才牵涉到
字节序
,单字节
数据
存取不牵扯
字节序
问题。 二、
网络
字节序
在
网络
协议中,TCP/IP协议使用
字节序
、
大端
字节序
(Big Endian)、小端
字节序
(Little Endian)总结
什么是
字节序
?
字节序
,简单来说,指的是 超过一个字节的
数据
类型在内存中存储的顺序 有几种
字节序
?
大端
字节序
(Big Endian) 高位字节
数据
存放在内存低地址处,低位字节
数据
存放在内存高地址处。 小端
字节序
(Little Endian) 高位字节
数据
存放在内存高地址处,低位
数据
存放在内存低地址处。 如上图所示,int32类型的数值 12345678用一个字节表示不了,
需要
用到4个字节,也就有了
字节序
的问题。 数值 12345678(一千两百三十四万五千六百七十八),这里的最高位
数据
就是1,最低位
数据
大端
小端
字节序
与
网络
字节序
概念
大端
(Big-Endian),小端(Little-Endian)以及
网络
字节序
的概念在编程中经常会遇到。 大小端是面向多字节类型定义的,比如2字节、4字节、8字节。整型、长整型、浮点型等,单字节的字符串不用考虑 在存储、传输、接收时
需要
处理
大端
(Big-Endian)内存存储上、低地址存高字节 小端(Little-Endian) 内存存储上,低地址存低字节
网络
字节序
是指
大端
传输 一个long型
数据
占4个字节它们分别是:0x12, 34, 56, 78,大小端字节在内存中 存储...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章