java 中的编码
1、1字节=8位,1024字节=1KB
2、16进制0x12345678,其二进制为00010010 00110100 01010110 01111000共4字节
3、字节序:两个或多个字节存放的先后顺序(Big Endian大端序,Little Endian小端序)。UTF-16编码的头2个字节里标记字节序: LE [0xFF, 0xFE], BE [0xFE, 0xFF]。(http://blog.jobbole.com/102432/)
4、0x12345678以Big Endian存储:0x12 0x34 0x56 0x78
5、0x12345678以Little Endian存储:0x78 0x56 0x34 0x12
6、字符集:Unicode
7、编码:UTF-8、UTF-16、UTF-16BE、UTF-16LE等等
8、编码是字符集的一种编码方式。
9、查看编码的网站:https://unicode-table.com
10、
计算机存储补码
+1
原码:0000 0001
反码:0000 0001
补码:0000 0001
-1
原码:1000 0001
反码(负数反码:在原码基础上,除符号位外,其余取反):1111 1110
补码(负数补码:在反码基础上,加1):1111 1111
java中byte类型占8位。带符号最大值是127,带符号最小值是-128。不带符号最大值是255,不带符号最小值是0。
十进制 十六进制 二进制
254 0xfe 11111110
将254(即00000000 00000000 00000000 11111110)赋值给一个byte类型的变量, 取低8位 11111110,直接当做补码存储,其反码是1111 1101,其原码是1000 0010(十进制-2)。
11、编码
UTF-8
没有字节序的概念。
所以1~4字节UTF-8编码看起来是这样的:
0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
字节头部识别就是前面的0,110,1110,11110表示字节数。
从UTF-8字节流的任意位置开始可以有效地找到一个字符的起始位置,字符边界很容易界定、检测出来。
单字节可编码的Unicode范围:\u0000~\u007F(0~127)
双字节可编码的Unicode范围:\u0080~\u07FF(128~2047)
三字节可编码的Unicode范围:\u0800~\uFFFF(2048~65535)
四字节可编码的Unicode范围:\u10000~\u1FFFFF(65536~2097151)
UTF-16
2字节或4字节
查看中文 “哈” 的编码:


System.out.print(b & 0xFF);
b是byte类型,存储的是1000 0010(即10进制-2),当jvm检测到byte可能会转为 int,或byte与int类型进行计算时,会将byte的最高24位补1,扩充到32位,再参与计算。
1000 0010 扩充到32位:11111111 11111111 11111111 10000010。
b & 0xFF == 11111111 11111111 11111111 10000010 & 00000000 00000000 00000000 11111111
所以 b & 0xFF == 00000000 00000000 00000000 00000000 10000010 (即十进制254)
java 中的编码的更多相关文章
- 理清Java中的编码解码转换
1.字符集及编码方式 概括:字符编码方式及大端小端 详细:彻底理解字符编码 可以通过Charset.availableCharsets()获取Java支持的字符集,以JDK8为例,得到其支持的字符集: ...
- java中的编码和编码格式问题
看来问的人和回答的人都不一定清楚什么是“编码和编码格式”,以及如何理解“java中字符串的编码”;首先明确几点: unicode是一种“编码”,所谓编码就是一个编号(数字)到字符的一种映射关系,就仅仅 ...
- java基础---->java中字符编码问题(一)
这里面对java中的字符编码做一个总结,毕竟在项目中会经常遇到这个问题.爱不爱都可以,我怎样都依你,连借口我都帮你寻. 文件的编码格式 一.关于中文的二进制字节问题 public static Str ...
- 关于java中的编码问题
ok,今天搞了一天都在探索java字符的编码问题.十分头疼.最后终于得出几点: 1.网上有很多博客说判断一个String的编码的方法是通过如下代码;但其实这个代码完全是错的,用一种编码decode后, ...
- JAVA中的编码分析
在实际编程中可以不用关注JVM中使用的是什么编码,而只需要关注自己输出需要采用的编码,JVM会根据你设置的编码正确操作. 1.String采用的是什么编码? 很多厂家根据规范实现了JVM,JVM只说明 ...
- java中字符串编码转换
Java 正确的做字符串编码转换 字符串的内部表示? 字符串在java中统一用unicode表示( 即utf-16 LE) , 对于 String s = "你好哦!"; 如果源码 ...
- Java中字符编码和字符串所占字节数 .
首 先,java中的一个char是2个字节.java采用unicode,2个字节来表示一个字符,这点与C语言中不同,C语言中采用ASCII,在大多数 系统中,一个char通常占1个字节,但是在0~12 ...
- 一文解开java中字符串编码的小秘密
目录 简介 Unicode的发展史 Unicode详解 UTF-8 UTF-16 UTF-32 Null-terminated string 和变种UTF-8 简介 在本文中你将了解到Unicode和 ...
- Java中的编码
package coreJava; import javax.swing.plaf.synth.SynthSpinnerUI; public class EncodeDemo { public sta ...
随机推荐
- c++11多线程---线程入口函数
1.普通函数(线程入口) #include <thread> #include <iostream> void hello(const char *name) { std::c ...
- 2、Shiro的认证
Shiro的认证流程大体可以参考下面这幅图: 但是没有接触过shiro的同学看到上面的图片也不明白,下面我们来在代码中尝试体验Shiro的认证过程: 1.新建一个SpringBoot项目项目结构如下: ...
- Flink容错机制
Flink的Fault Tolerance,是在在Chandy Lamport Algorithm的基础上扩展实现了一套分布式Checkpointing机制,这个机制在论文"Lightwei ...
- JavaScript中JSON的序列化和解析
1.序列化:JSON对象----->JSON格式字符串 ①方法: JSON.stringify() ②示例程序: var jsonString = JSON.stringify(obj); al ...
- 【MM系列】SAP MM模块-BAPI:BAPI_GOODSMVT_CREATE的CODE分析
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-BAPI:BAPI ...
- vue使用笔记二
es6\es2015特性http://lib.csdn.net/article/reactnative/58021?knId=1405 使用express-generator初始化你的项目目录http ...
- [Git] 018 冲突在所难免,需要巧妙化解
0. 回顾 [Git] 005 初识 Git 与 GitHub 之分支 中"4.2 情形二"的 9 提及了"解决冲突" 当时没有展开,这回详谈 我这回反其道而行 ...
- [转帖]Oracle dba_objects和all_objects 最大的区别
Oracle dba_objects和all_objects 最大的区别 原创 Oracle 作者:maohaiqing0304 时间:2015-08-14 15:07:18 9281 0 链 ...
- WHY吃糖果 QDUOJ 二分嵌套
WHY吃糖果 QDUOJ 二分嵌套 原题链接 解题思路参考链接 题意 给出一个\(n*n\)的矩阵,每个格子的权值为\(i*i+j*j+i*j+100000*(i-j)\),求该矩阵中第m小的权值为多 ...
- 17: VUE数据绑定 与 Object.defineProperty
VUE数据绑定原理:https://segmentfault.com/a/1190000006599500?utm_source=tag-newest Object.defineProperty(): ...