大端小端转换,只用一句C++语句?能行吗

shawn_cd 2011-08-18 09:24:20
大端小端转换,只用一句C++语句,能行吗?求高手指点~
...全文
653 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
rendao0563 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 shawn_cd 的回复:]
大端小端转换,只用一句C++语句,能行吗?求高手指点~
[/Quote]

使用自动化的工具自动生成代码. 他们会搞定这些. 比如 google protobuf, thrift
赵4老师 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 dahuaixiaohuai 的回复:]
使用htonl ntohl htons ntohs四个函数专门针对32位整数和16位整数。
[/Quote]
偶来晚一步。
nice_cxf 2011-08-18
  • 打赏
  • 举报
回复
如果你本地是小端的(如X86平台),可以用htonl ntohl htons ntohs四个函数来转换,如果本地是大端的,只能自己写程序转换了
一叶之舟 2011-08-18
  • 打赏
  • 举报
回复
使用htonl ntohl htons ntohs四个函数专门针对32位整数和16位整数。
turing-complete 2011-08-18
  • 打赏
  • 举报
回复
没听说过有转换这个的啊,这是CPU级别的事儿,转了也是错的,除非数据本身是颠倒的。
一叶之舟 2011-08-18
  • 打赏
  • 举报
回复
ntohl
htonl
ntohs
htons
这四个函数专门实现这一功能。
「已注销」 2011-08-18
  • 打赏
  • 举报
回复
通过移位交换是可以实现,不过已经有现成的函数支持了,用于网络编程的hton\ntoh的字节操作函数就行
「已注销」 2011-08-18
  • 打赏
  • 举报
回复
通过移位交换是可以实现,不过已经有现成的函数支持了,用于网络编程的hton\ntoh的字节操作函数就行
morebread 2011-08-18
  • 打赏
  • 举报
回复
A = (A >> 8) | ((A << 8) & 0xFF)

这样应该可以吧?
大大啊 2011-08-18
  • 打赏
  • 举报
回复
学习了~~~~~~~~~~~
morebread 2011-08-18
  • 打赏
  • 举报
回复
假设已经有变量A

A = (A >> 8) | ((A << 8) & 0xFF)

不知道这样可以不
shawn_cd 2011-08-18
  • 打赏
  • 举报
回复
采用大端小端对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位存放在低地址,小端方式将低位存放在高地址。采用大端方式 进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。
junfeng4368 2011-08-18
  • 打赏
  • 举报
回复
求教大端小端是什么
rendao0563 2011-08-18
  • 打赏
  • 举报
回复
举个例子先?

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧