BE--LE
来源:互联网 发布:二次元影像软件用法 编辑:程序博客网 时间:2024/05/01 11:06
一、检查BE---LE
#include <iostream>
using namespace std;
int CheckCPU();//若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
int main(){
int a=CheckCPU();
if (a)
{
cout<<"Little_endian"<<endl;
}
else
cout<<"Big_endian"<<endl;
return 0;
}
int CheckCPU(){
//联合体union的存放顺序是所有成员都从低地址开始存放
//Union的大小为其内部所有变量的最大值,并且按照类型最大值的整数倍进行内存对齐。
union w{
int a;
char b;
}c;
c.a=1;
return (c.b==1);
}
二、不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序 .
最常见的有两种
1.LE little-endian 符合人的思维的字节序
地址低位存储值的低位,地址高位存储值的高位 .
2.BE big-endian 直观的字节序
地址低位存储值的高位,地址高位存储值的低位 .
例:如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为
big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x23 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。它采用了big endian排序方式。
为了进行转换socket提供了转换的函数 有下面四个
htons 把unsigned short类型从主机序转换到网络序(s 就是short, l是long ,h是host, n是network)
htonl 把unsigned long类型从主机序转换到网络序
ntohs 把unsigned short类型从网络序转换到主机序
ntohl 把unsigned long类型从网络序转换到主机序
在使用little endian的系统中 这些函数会把字节序进行转换 。在使用big endian类型的系统中 这些函数会定义成空宏
不同的CPU上运行不同的操作系统,字节序也是不同的。在网络程序开发时 或是跨平台开发时 也应该注意保证只用一种字节序 。
x86系统是小端字节序系统、PPC系统是大端字节序系统
- BE--LE
- 关于UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE
- 关于UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE
- 关于UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE
- unicode的UTF-16BE和UTF-16LE
- wireshark中sequence number (BE)(LE)
- 关于UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE
- BE和LE在编程时的区别
- To be by your side -- theme song of Le Peuple Migrateur
- UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE,GBK 之间的转换
- python读写UCS-2 big/little endian(utf-16-be/utf-16-le)格式的文件
- UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE,GBK 之间的转换
- UTF-16、UTF-16BE、UTF-16LE编码方式的区别
- UTF-16、UTF-16BE、UTF-16LE编码方式的区别
- UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE,GBK 之间的转换
- [Charset]UTF-8, UTF-16, UTF-16LE, UTF-16BE的区别
- [Charset]UTF-8, UTF-16, UTF-16LE, UTF-16BE的区别
- [Charset]UTF-8, UTF-16, UTF-16LE, UTF-16BE的区别
- Web Servers的概念
- 当android中,遇到这样的问题时
- TabContainer用法
- JAVA 时间格式转换
- 有克隆,就有销毁
- BE--LE
- 《算法导论》学习总结——第一部分
- struts执行流程
- ecshop购物车保留功能
- Google超高速吉比特因特网服务的研究报告
- GetStockObject 理解
- (备忘)devexpress 中 在客户端事件(javascript)中,设置不执行服务器端代码的语句 e.processOnServer = true
- 算法,数据结构分析
- 一种变进制数及其应用(全排列之Hash实现)