小端存储转大端存储 & 大端存储转小端存储
1、socket编程常用的相关函数:htons、htonl、ntohs、ntohl
h:host n:network s:string l:long
2、基本数据类型,2字节,4字节,8字节的转换如下:
try 一 try template <typename T>
T transformBigToLittleEndian(const T &BiValue)
{
unsigned short sizeCount = sizeof(T);
T liValue; if (sizeCount == )
{
liValue = ((BiValue & 0xFF00) >> )
|((BiValue & 0x00FF) << );
}
else if (sizeCount == )
{
liValue = ((BiValue & 0xFF000000) >> )
| ((BiValue & 0x00FF0000) >> )
| ((BiValue & 0x0000FF00) << )
| ((BiValue & 0x000000FF) << );
}
else if (sizeCount == )
{
liValue = ((BiValue & 0xFF00000000000000) >> )
| ((BiValue & 0x00FF000000000000) >> )
| ((BiValue & 0x0000FF0000000000) >> )
| ((BiValue & 0x000000FF00000000) >> )
| ((BiValue & 0x00000000FF000000) << )
| ((BiValue & 0x0000000000FF0000) << )
| ((BiValue & 0x000000000000FF00) << )
| ((BiValue & 0x00000000000000FF) << );
}
return liValue;
}
template <typename T>
T transformLittleToBigEndian(const T & liValue)
{
unsigned short sizeCount = sizeof(T);
T BiValue; if (sizeCount == )
{
BiValue |= ((liValue & 0x00FF) << );
BiValue |= ((liValue & 0xFF00) >> );
}
else if (sizeCount == )
{
BiValue = ((liValue & 0x000000FF) << )
| ((liValue & 0x0000FF00) << )
| ((liValue & 0x00FF0000) >> )
| ((liValue & 0xFF000000) >> );
}
else if (sizeCount == )
{
BiValue |= ((liValue & 0x00000000000000FF) << );
BiValue |= ((liValue & 0x000000000000FF00) << );
BiValue |= ((liValue & 0x0000000000FF0000) << );
BiValue |= ((liValue & 0x00000000FF000000) << );
BiValue |= ((liValue & 0x000000FF00000000) >> );
BiValue |= ((liValue & 0x0000FF0000000000) >> );
BiValue |= ((liValue & 0x00FF000000000000) >> );
BiValue |= ((liValue & 0xFF00000000000000) >> );
}
return BiValue;
}
int main()
{
transformBigToLittleEndian();
int value = 1;
value = transformLittleToBigEndian(value);
cout << "int value = 1 从小端转为大端后 biA = " << value << endl;
value = transformBigToLittleEndian(value);
cout << "再从大端转换为小端后的值 = " << value << endl;
}
如何判断自己计算机的存储方式是大端存储还是小端存储:https://www.cnblogs.com/azbane/p/11303463.html
小端存储转大端存储 & 大端存储转小端存储的更多相关文章
- 把mmapv1存储引擎存储的mongodb3.0数据库数据复制到WiredTiger存储引擎的mongodb3.2中
mongodb3.0在mmapv1的存储引擎基础上添加了一个新的存储引擎WiredTiger.但是3.0的默认存储引擎依旧是mmapv1,因此我们项目之前也就用的默认方式. 但是mongodb更新实在 ...
- 腾讯混合云存储 TStor 系列再添新成员,并行存储一体机正式发布
最近国内某大型互联网公司依靠其数据优势成功上市,可见数据的重要性,而数据和存储密不可分,您真的知道自己需要更高性能存储吗? 在当今数据爆发式增长的时代,数据已经成为很多行业最重要的资源,没有之一. 数 ...
- 转!!MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)
MySQL中的存储引擎: 1.存储引擎的概念 2.查看MySQL所支持的存储引擎 3.MySQL中几种常用存储引擎的特点 4.存储引擎之间的相互转化 一.存储引擎: 1.存储引擎其实就是如何实现存储数 ...
- js判断移动端浏览器类型,微信浏览器、支付宝小程序、微信小程序等
起因 现在市场上各种跨平台开发方案百家争鸣各有千秋,个人认为最成熟的还是hybird方案,简单的说就是写H5各种嵌入,当然作为前端工程师最希望的也就是公司采用hybird方案当作技术路线. 所谓的hy ...
- 关于Finereport移动端报表二次开发的两个小例子
例1:刷新页面 1. 问题描述 A超链至B填报,B提交数据后返回A时,A自动刷新显示新的数据. 2. 解决方案 1. contentPane.setAppearRefresh(); //在A的加载结 ...
- .NET Core 小程序开发零基础系列(2)——小程序服务通知(模板消息)
基于上一篇文件“.NET Core 小程序开发零基础系列(1)——开发者启用并校验牵手成功”的反映,个人觉得效果很不错,大家对公众号开发还是有很大需求的,同时也收到了很多同学的问题,后面我也会通过实战 ...
- 【移动端 Web】怎么循序渐进地开发一个移动端页面
1. 移动页面开发基础 1.1 像素——什么是像素 像素是 Web 页面布局的基础,那么到底什么才是一个像素呢? 像素:一个像素就是计算机屏幕所能显示一种特定颜色的最小区域.这是像素的概念,实际上,W ...
- 林兴爆料小程序很快可以支持各个 App 直接打开小程序
在微信开放平台基础高级产品经理林兴演讲的当场,他爆料了微信小程序一个轰动性新能力:小程序很快可以支持各个 App 直接打开小程序!没错,你没有听错,简单来说,在不久以后,所有的 App 里面都可以看到 ...
- 微信小程序开发——以简单易懂的浏览器页面栈理解小程序的页面路由
前言: 对于小程序的页面路由,如果没有一定开发经验的话,理解起来还是会有些困难的.哪怕是有一定小程序开发经验的开发者,能够完全理解掌握的恐怕也不多. 这里就以另外一种方式来详细的介绍小程序的页面栈及路 ...
- 移动端经常出现的兼容问题,谈谈移动端应用或者wap站的一些优化技巧和心得
移动端经常出现的兼容问题,谈谈移动端应用或者wap站的一些优化技巧和心得 1. 安卓浏览器看背景图片,有些设备会模糊. 因为手机分辨率太小,如果按照分辨率来显示网页,字会非常小,安卓手机 ...
随机推荐
- 大数据基础总结---HDFS分布式文件系统
HDFS分布式文件系统 文件系统的基本概述 文件系统定义:文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易. 文件名:在文件系统中,文件名是用于定位存储位置. 元数据(Metad ...
- ELK学习笔记之ElasticSearch的集群(Cluster),节点(Node),分片(Shard),Indices(索引),replicas(备份)之间关系
[Cluster]集群,一个ES集群由一个或多个节点(Node)组成,每个集群都有一个cluster name作为标识----------------------------------------- ...
- kafka在zookeeper创建使用了哪些znode节点?
我们都知道kafka利用zookeeper做分布式管理,具体创建使用了哪些znode节点呢? 答案均在源码的ZkData.scala文件中,具体路径如下: https://github.com/apa ...
- [個人紀錄] regular 搜集
判斷有理數 ^(0|[1-9]([0-9]{1,5})?)((\.(([0-9]{1,5})?[1-9])))?$
- DjangoDRF总结
思维导图xmind文件:https://files-cdn.cnblogs.com/files/benjieming/DRF%E6%A8%A1%E5%9D%97.zip
- iis url 重写
1.选择网站-找到有测url 重写 :2:选中它,在右上角有一个打开功能,点击打开 3.依然在右上角,点击添加规则 4:选择第一个,空白规则 名称随便输入,我们通常有这样一个需求,就是.aspx 后缀 ...
- 开发技术-IPython介绍
开发技术-IPython介绍 IPython是交互式的Python命令行,希望大家喜欢. 最近在回顾之前学习的内容,并且继续学习新的知识.这种自身的感觉,很不一般,有太多的感想产生.希望自己可以坚持将 ...
- node+express修改代码会自动重新运行
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_40822305/artic ...
- String类常用功能
String类常用功能 判断: boolean equals(Object obj) boolean equalsIgnoreCase(String str) //忽略大小写 boolean star ...
- android studio学习----The project encoding (windows-1252) does not match the encoding specified in the Gradle build files (UTF-8)
Warning:The project encoding (windows-1252) does not match the encoding specified in the Gradle buil ...