public static void main(String[] args) {
String abc="我";
byte[] bytes = abc.getBytes();
for (byte ev:bytes){
System.out.println(ev);
System.out.println(Integer.toHexString(ev)+"");
System.out.println(Integer.toHexString(ev&0xff)+"");
}
输出
-26
ffffffe6
e6
-120
ffffff88
88
-111
ffffff91
91
项目编码是:utf-8,我们都知道我这个字代表3个字节;
分别是 -26(1001:1010).-120,-111,我们也知
System.out.println(ev);
其中如果需要用
System.out.println(Integer.toHexString(ev)+"");
我们需要做的是,将byte -26 在数值大小不变的情况下转为int-26 我们知道 int -26 的原码为10000000.. 11010.
Integer.toHexString(ev) 的意思 是根据计算机存储的 方式展示出来,计算机存的是补码,那么 就上面的转补码:11111...00110. 用16进制表示就是ff..e6