剑痴乎

  • 首页
  • 文章分类
    • 音视频
    • WebRTC
    • 编程之美
    • Linux
    • Windows
    • 生活点滴
    • 校园生活
  • 参考
    • API参考
    • 实用工具
    • 测试音视频
    • 文档
  • 留言板
  • 关于
剑痴乎
代码为剑,如痴如醉
  1. 首页
  2. 编程之美
  3. 正文

网络字节转换到本地字节的函数模板

2016年5月28日 756点热度 0人点赞 0条评论

在做视频文件解析开发时,经常需要进行网络字节到本地字节的转换。在视频文件中,相关数据是以网络字节存储的,比如视频的宽,定义为uint_32类型,读取时我们需要转换为本地字节序才可以得到正确结果。

操作系统自带api可以帮助我们进行字节序的转换,如下所示函数与具体平台无关:

C++
1
2
3
4
u_short htons(u_short hostshort); // 将u_short 类型变量从主机字节顺序转化到TCP/IP网络字节顺序
u_long htonl(u_long hostlong);    // 将u_long 类型变量从主机字节顺序转化到TCP/IP网络字节顺序
u_short ntohs(u_short netshort);  // 将u_short 类型变量从TCP/IP网络字节顺序转化到主机字节顺序
u_long ntohl(u_long netlong);     // 将u_long 类型变量从TCP/IP网络字节顺序转化到主机字节顺序

我们也可以用c++函数模板实现一个,方便使用,我一般都是用自己的函数模板的:

C++
1
2
3
4
5
6
7
8
9
10
11
// 网络字节到小端
template <class T>
T ntole(T num)
{
    T ret = 0;
    unsigned char * p = (unsigned char*)&num;
    for(int i = 0; i < sizeof(T); i++)
        ret |= (p[i] << ((sizeof(T) - i - 1) * 8));
 
    return ret;
}

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: C++
最后更新:2016年6月11日

Jeff

管理员——代码为剑,如痴如醉

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据。

版权声明

为支持原创,创作更好的文章,未经许可,禁止任何形式的转载与抄袭,如需转载请邮件私信!本人保留所有法定权利。违者必究!

近期评论
  • ouyang on WebRTC研究:RTP报头扩展假如放中间是否有歧义了,例如我中间说2个…
  • Artificial intelligence creates content for the site, no worse than a copywriter, you can also use it to write articles. 100% uniqueness :). Click Here: https://bit.ly/3iPPltW?h=70a8a6efa38594c078497e06bfe05726& on WebRTC研究:基于Transport Feedback的早期丢包检测upn6859h
  • yy on WebRTC研究:Trendline滤波器-TrendlineEstimator我也有这个问题,不理解。
  • Unreal on WebRTC研究:统计参数之往返时延非常不准
  • huowa222 on WebRTC研究:FEC之RED封装rtp header 有 pt 字段
相关文章
  • MFC自绘带背景颜色标题栏
  • VC++获取本机IP地址
  • FLTK程序编译错误
  • C++实现windows重启
  • Windows下获取当前屏幕分辨率

COPYRIGHT © 2022 jianchihu.net. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang