默认

脑残式网络编程入门(九):面试必考,史上最通俗大小端字节序详解

查看数: 109667 | 评论数: 12 | 收藏 8
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-08-10 15:48

正文摘要:

1、引言 最近在从头重写 MobileIMSDK 的TCP版,自已组织TCP数据帧时就遇到了字节序大小端问题。所以,借这个机会单独整理了这篇文章,希望能加深大家对字节序问题的理解,加强对IM这种基于网络通信的程序在数据传输 ...

评论

Rayman 发表于 1 年前
有个问题想请教一下;之前在开发过程中也遇到了和博主一样的业务场景,Android和后端交互,需要将小端序转变为大端序,收到数据将大端转为小端。

看过一些文章描述,移动端一般都是小端序,而网络序都是大端序。

但是也有一些文章就说:Java默认就是大端序,以至于我们在网络和本地文件IO的场景无缝处理。

这个Java默认大端,是指这个语言大端?但是Java最后都会运行在PC或者Android上面啊?而大小端都根据设备的CPU来说的,那也正常都是小端啊....所以怎么理解这个Java默认大端序呢?在什么场景上会显示出这是大端序呢?
leirenbaobao 发表于 1 年前
引用:JackJiang 发表于 2022-11-30 15:21
要处理应该都要处理

感觉都不用处理 比如最简单的http1.1 header的content-length就没有要处理大小端这一说。
JackJiang 发表于 1 年前
引用:leirenbaobao 发表于 2022-11-30 15:14
就是MobileIMSDK中关于TCPFrameCodec.m的代码。不明白为什么数据包头header需要大小端处理,而数据包体bo ...

要处理应该都要处理
leirenbaobao 发表于 1 年前
引用:JackJiang 发表于 2022-11-30 12:01
“为什么后面的内容不转呢?”:
你是看到哪里的具体代码了?你可以贴出来我看看,让我理解一下你说的是 ...

就是MobileIMSDK中关于TCPFrameCodec.m的代码。不明白为什么数据包头header需要大小端处理,而数据包体body不需要。
就是帖子中第七节。
JackJiang 发表于 1 年前
引用:leirenbaobao 发表于 2022-11-30 11:21
前辈 这里有个疑问请教下 如果IMSDK的包结构是前面部分固定几个字节是长度 这部分转换成网络字节序。后面 ...

“为什么后面的内容不转呢?”:
你是看到哪里的具体代码了?你可以贴出来我看看,让我理解一下你说的是什么意思
leirenbaobao 发表于 1 年前
引用:JackJiang 发表于 2021-08-17 15:57
嗯呢,感谢反馈

前辈 这里有个疑问请教下 如果IMSDK的包结构是前面部分固定几个字节是长度 这部分转换成网络字节序。后面一部分是具体内容 为什么后面的内容不转呢?如果后面的内容就是0x1234567。不一样会存在问题?
Yj_yanyi 发表于 1 年前
学习了
JackJiang 发表于 2 年前
引用:alvin! 发表于 2021-08-17 15:11
作者你好,我用macOS测试,使用的是小端字节序

嗯呢,感谢反馈
alvin! 发表于 2 年前
作者你好,我用macOS测试,使用的是小端字节序
leaffei 发表于 3 年前
不错不错
JackJiang 发表于 3 年前

嗯呢
St. 发表于 3 年前
屌爆了

返回顶部