公共和儿媳

Discuss / Java / 能给我解释下为什么结果是97

能给我解释下为什么结果是97

Topic source
public static void main(String[] args) throws UnsupportedEncodingException {		byte[] bytes = "a".getBytes("UTF-8");		for (byte b:bytes) {			System.out.println(b);//97		}	}

为什么是97?中间经历了哪些过程?不明白啊

ANGERIED

#2 Created at ... [Delete] [Delete and Lock User]
char a = 'a'; //按Unicode编码,是一串二进制数 010101010....int a1 = (int) a; //97 将二进制转成十进制

97 就是a啊

看字符码表就知道了

好奇 中文 显示 什么 我去 试试。。。

中国 显示 :中国  

-28-72-83      -27-101-67

三个字节拆开了,byte 一个字节 怎么 表示 3个字节呢。。。

还是去看看 我之前找的文章吧、、、、、

忍不住:说详细点吧: 

已知 中文 的Unicode 编码是 x4E2D(01001110 00101101);  x6587(01100101 10000111);

求:中文 的utf-8 编码是多少?

参考:

转换公式:1110xxxx 10xxxxxx 10xxxxxx

可以得出结果为:11100100 10111000 10101101(中)(文 自己计算吧)   

在字符转换为byte数组 遍历结果:(我靠,我计算结果怎么卡住了:为什么我的结果是:-100,-56,-45)

28+100 72+56  83+45  都等于 128  一定是我有什么地方没搞明白。。。。好像什么补码还是反码来着。。。记得廖大还回过我

11100100

负数按 补码 存储,所以转换为byte之后的真值为1 0011011  +1  =  1 0011100(由补码求原码,按位取反末位加1),即-28

🌙

#7 Created at ... [Delete] [Delete and Lock User]

之前真是闲的蛋疼...总结 就是 计算机以补码存储数据


  • 1

Reply