C++编程语言对于编程人员来说是非常重要的一个计算机应用语言。我们今天会在这篇文章中为大家详细介绍一下C++ Endian的基本应用方式,希望朋友们可以从中对C++编程语言有一个深刻的了解。#t#
在潘集等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、网站建设 网站设计制作按需定制制作,公司网站建设,企业网站建设,高端网站设计,网络营销推广,成都外贸网站制作,潘集网站建设费用合理。
最近写了一段代码来读取和输出一个文件.这个文件的标准规范里面同时使用了LittleEndian和BigEndian.***次在C++中接触这个问题.所以需要做一下工作:
1.判断当前CPU使用哪种C++ Endian?
2.如果当前数据的Endian和当前CPU相反,如何装换?
代码相当直观:
1.判断CPU的C++ Endian:
- union {
- short s;
- char c[sizeof(short)];
- } un;
- un.s = 0x0102;
- _isLittleEnd = (un.c[0] == 0x2);
***的_isLittleEnd是一个bool变量用来保存判定的结果:
2.如何把一个相反C++ Endian的数据转换过来:
- void Helper::swap(char ch[], int count) {
- int size = count / 2;
- int max = count - 1;
- for (int i = 0; i < size; i++) {
- char t = ch[i];
- ch[i] = ch[max - i];
- ch[max - i] = t;
- }
其实是将char[]数组就地反转.
3.如何把short/int/double等数据反转过来呢:
以int 为例的代码如下:
- int Helper::swap(int data) {
- union {
- int _i;
- char _c[sizeof(int)];
- } un;
- un._i = data;
- swap(un._c, sizeof(int));
- return un._i;
- }
到目前为止,用这个算法做的数据转换还没有发现错误的情况.也许是没碰到罢了.
例如 我没有测试1)对于负数这个算法是否正确.2)对于无符号数这个算法是否正确.因为这个文件规范里面不会出现这两种数.
内容比较基础.但觉得值得分享。在首页上挂一会. 出去腐败一把,回来再撤销(如果回来还比较清醒的话).
以上就是对C++ Endian基本概念的讲解
新闻名称:C++Endian具体操作方法讲解
URL链接:http://www.csdahua.cn/qtweb/news8/299408.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网