用一个实例来说明汉字如何转换为对应的字节。
中文编码是UNIQUE编码,即2个字节标识一个汉字;
如:我 = byte[] bs3 =new byte[]{-50,-46} = GBK编码10进制为52946。
如:
String str2 = "我";
byte[] bs2 = str2.getBytes("gbk");
我用gbk编码后的字节为:byte[] bs2 = new byte[]{-50,-46}
中间计算机做了什么呢!
1 我转换为字符“我”
2 找到相应的编码表 ,即gbk的编码表,然后拿到编码表对应 “我” 的二进制数值,
3 二进制数字解析为2个字节,字节1的十进制为=-50,字节2的十进制为=-46
4 返回两个字节的数组=bs2
将bs2转换为“我”这个汉字:
1 计算-50对应的二进制数值="11001110"(补码)
计算方式:String tString = Integer.toBinaryString((-50 & 0xFF) + 0x100).substring(1);
Java & 0xff:https://wenku.baidu.com/view/e454c202ed630b1c59eeb5ea.html
2 计算-46对应的二进制数值="11010010"(补码)
计算方式:String tString = Integer.toBinaryString((-50 & 0xFF) + 0x100).substring(1);
3 拼接两个字节为=1100111011010010=52946
转换地址:http://tool.oschina.net/hexconvert/
4 查找“我”GBK编码10进制数值是52946,正好与上面相等
汉字与编码转换:http://www.mytju.com/classcode/tools/encode_gb2312.asp
String str2 = "我"; // char a = str.charAt(0); byte[] bs = str2.getBytes("utf-8"); byte[] bs2 = str2.getBytes("gbk"); // -50,-46 我 byte[] bs3 =new byte[]{-50,-46,97,1}; System.out.println(new String( bs3,"gbk")); System.out.println( "111"); System.out.println( (-50 & 0xFF) ); String tString = Integer.toBinaryString((-50 & 0xFF) + 0x100); String tString2 = Integer.toBinaryString((-46 & 0xFF) + 0x100).substring(1); System.out.println(tString +" "+tString2 );
org.springframework.util.ObjectUtils :对象操作的工具类,判null,isArray,containsElement,hashCode,nullSafeToString
相关推荐
Delphi进制转换,十进制,二进制,十六进制,字符串--超短精简
C语言二进制字符串与十六进制字符串相互转化,利用MFC框架生成小工具。
解决labview字符串转换功能不足,将二进制字符串转变为十进制字符串。
我们都知道在linux下是没有itoa函数的,而又不能通过sprintf实现int转二进制字符串的方式,因此手动编写此代码段,希望可以对大家有帮助。
本资源是ruby代码,提供了一系列封装好的函数,用于快速进行转换,一个函数搞定,包括如下转换,二进制字符串与hex字符串的互转。二进制字符串与整数互转,包括uint8,uin16,uint32, 以及本地字节序和网络字节序两种...
VB.NET 字符串与二进制间的转换 VB.NET 字符串与二进制间的转换 VB.NET 字符串与二进制间的转换 VB.NET 字符串与二进制间的转换 VB.NET 字符串与二进制间的转换
labview2015版本,将二进制的字符串转换成十进制数值,
Lua小程序十六进制字符串和二进制数据间的转换[借鉴].pdf
具有三种搜索功能。 - 使用十六进制搜索字节 - 搜索纯文本字符串 - 搜索较小的二进制文件
matlab开发-将二进制字符串转换为十进制值。它将二进制流转换为十进制值,每次8位,尽管您可以更改它。
16进制数值向2进制字符串转化的小程序,亲测有效,内部附有解释说明
由于二进制数在C#中无法直接表示,所以所有二进制数都用一个字符串来表示 例如: 二进制: 1010 表示为 字符串:”1010″ int d = 10; //十进制转二进制字符串 Console.WriteLine(Convert.ToString(d,2)); //...
二进制文件字符串修改器,二进制文件字符串修改器,二进制文件字符串修改器
matlab编码和解码字符串转ascall码再转二进制.m
适用于在通讯时可以用到的实例,16进制转换为二进制,已经测试OK.
visual c++ 2进制字符串转10进制数
二进制字符串转为长整型[二进制字符串转为长整型]-精品源代码
CBinary类,处理二进制与字符串之间的转换
JAVA 二进制 字符串 转 十进制 异常 抛出
ASCII转换成十六进制字符串和二进制字符串显示