java的大端小端和c#如何对应
当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是端(endian)的问题应运而生了,对于不同的存储方法,就有大端(big-endian)和小端(little- endian)两个描述。
字节排序按分为大端和小端,概念如下
大端(big endian):低地址存放高有效字节
小端(little endian):低字节存放地有效字节
现在主流的CPU,intel系列的是采用的little endian的格式存放数据,而motorola系列的CPU采用的是big endian,ARM则同时支持 big和little,网络编程中,TCP/IP统一采用大端方式传送数据,所以有时我们也会把大端方式称之为网络字节序。
特别需要注意的是,C/C++语言编写的程序里数据存储顺序是跟编译平台所在的CPU相关的,而 JAVA编写的程序则唯一采用big endian方式来存储数据。
## java中为什么utf8字符串转字节后头部多了两个字节
-----------------------------
Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。
(Unicode是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS。UCS可以看作是"Unicode Character Set"的缩写。)
在UCS编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。
这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。
在 Java 中直接使用Unicode 转码时会按照UTF-16LE 的方式拆分,并加上 BOM。 如果采用 UTF-16 拆分,在 Java 中默认采用带有 BOM 的 UTF-16BE 拆分。 (其实Unicode与UTF-8是完全一样的)
## 引用
-----------------------------
- [字节存储排序:大端和小端的判别及转换](http://www.cnblogs.com/Romi/archive/2012/01/10/2318551.html)
- [Java之中如何判断CPU是大端(Big Endian)还是小端(Little Endian) ](http://blog.chinaunix.net/uid-1844931-id-3022904.html)
- [java 大端和小端转换](http://blog.csdn.net/hhbgk/article/details/50673991)
相关文章
- Java架构师-调优(四):Linux调优与架构调优
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现[转载]
- 客户端是选择Java Swing还是C# Winform
- java设计模式之单例模式
- 2018年如何快速学Java
- 【Java 设计模式 · 结构型 & AOP】代理模式(Proxy Pattern)& Spring AOP 应用
- 数据库、C#、Java生成唯一GUID 方法
- Java、C++、Python、Ruby、PHP、C#和JavaScript的理解
- atitit.js 与c# java交互html5化的原理与总结.doc
- Java 8 最快的垃圾搜集器是什么?
- Java线程池的那些事
- [置顶] JAVA从零单排4-----继承、封装和多态详解
- 黑马程序员:Java基础总结----java注解
- ZeroMQ之Push与Pull (Java)
- Error:java: 不再支持源选项 5。请使用 6 或更高版本。
- C#,Java,C -循环冗余检验:CRC-16-CCITT查表法
- Java和C#中的接口对比(有你不知道的东西)
- Java 蒙特卡洛方法圆周率 π 值求解
- Java 基础(工厂设计模式)
- C# 与JAVA 的RSA 加密解密交互,互通,C#使用BouncyCastle来实现私钥加密,公钥解密的方法
- java和c#通过esb服务互调用组件
- 【 java 数组】数组
- 超越Java、C#!Python成第一编程语言
- 【知识积累】DES算法之C#加密&Java解密
- PHP、JAVA、C#、Object-C 通用的DES加密