小端存储转大端存储 & 大端存储转小端存储
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. 安卓浏览器看背景图片,有些设备会模糊. 因为手机分辨率太小,如果按照分辨率来显示网页,字会非常小,安卓手机 ...
随机推荐
- Java学习:Junit简介
Junit简介 概述: JUnit 是用于编写和运行可重复的自动化测试的开源测试框架,这样可以保证我们的代码按预期工作.JUnit 可广泛用于工业和作为支架(从命令行)或IDE(如 IDEA)内单独的 ...
- .NET MVC 序列化与反序列化
using System.Runtime.Serialization.Json; using System.IO; using System.Text; //序列化 public str ...
- PIE SDK加载WMS服务数据
1. 功能简介 WMS服务,WMS是OGC标准中比较简单也是比较重要的标准之一.它全称是“Web Map Service”(网络地图服务):利用具有地理空间位置信息的数据制作地图.其中将地图定义为 ...
- python动态视频下载器
这里向大家分享一下python爬虫的一些应用,主要是用爬虫配合简单的GUI界面实现视频,音乐和小说的下载器.今天就先介绍如何实现一个动态视频下载器. 爬取电影天堂视频 首先介绍的是python爬取电影 ...
- Python检测URL状态
需求:Python检测URL状态,并追加保存200的URL 代码一: #! /usr/bin/env python #coding=utf-8 import sys import requests d ...
- OpenInstall实现APP无邀请码推广
1.登录OpenInstall网站,这里会为你创建一个AppKey,而这个东西在web页面会用到. 2.在推广页面中加入推广下载. <script type="text/javascr ...
- Linux发展史与安装-Linux从入门到精通第一天(非原创)
文章大纲 一.Linux发展史二.Linux系统的安装三.Linux系统的文件四.学习资料下载五.参考文章 一.Linux发展史 1. Linux前身-Unix 1968年 Multics项目MI ...
- MySQL——基本概念
1.数据库:是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合.它是一个按数据结构来存储的和管理数据的计算机软件系统,即数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术 ...
- windows设置多个JDK环境
1.查看jdk版本 java -version 2.查看JAVA_HOME和PATH的变量值 echo %JAVA_HOME% set path 3.临时修改环境变量JAVA_HOME和PATH的变量 ...
- mysql主从复制几个重要的参数
1. relay_log_recovery = 1 当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上 ...