当前位置: 代码迷 >> J2SE >> 向达人求函数:关于汉字GBK,ASCII,二进制,十六进制的,该怎么解决
  详细解决方案

向达人求函数:关于汉字GBK,ASCII,二进制,十六进制的,该怎么解决

热度:287   发布时间:2016-04-24 14:13:45.0
向达人求函数:关于汉字GBK,ASCII,二进制,十六进制的
本人要做一些字符串处理,奈何基础太差,想一次性向各位达人求教一下转换函数:
1。汉字(或任意字符)转   二进制(01010...)   表示
2。汉字转   十六进制   (如果第一步成功了,实际上就是二进制到16进制互转)
3。汉字对应的GBK编码。   例如每个汉字转成两位(2Byte   即   16bit),这两位的   十六进制(或二进制)表示。
4。汉字的字符对应的数值,例如:
    String   str1   =   "中国 ";
                char[]   strChars   =   str1.toCharArray();
                for(int   i=0;i <strChars.length;i++){
                        System.out.print((int)strChars[i]);
                }    
得到的结果是:
20013
22269
这里得到的整数是什么值?(因为我知道,对于ascii码表中的字符,char的整数值对应的就是ASCII码值,例如   'a '   对应的int   值是97   。但是上述例子中得到的数值是什么?

综上,谢谢!


------解决方案--------------------
1. String str1 = "中国 ";
char[] strChars = str1.toCharArray();
for(int i=0;i <strChars.length;i++){
System.out.println(Integer.toHexString((int)strChars[i]));//16进制
System.out.println(Integer.toBinaryString((int)strChars[i]));//二进制
}
3. String str1 = "中国 ";
byte[] b=str1.getBytes( "gbk ");

for(int i=0;i <b.length;i++){
System.out.println(Integer.toHexString(b[i]));
System.out.println(Integer.toBinaryString(b[i]));
}
4. 显示的是汉字unicode编码
------解决方案--------------------
楼上回答得很正确,想插一句都不知道还有什么没说。
------解决方案--------------------
将 grant999 的第三个改一下:

for (int i = 0; i < b.length; i++) {
  int tmp = b[i] & 0xff;
  System.out.println(Integer.toHexString(tmp));
  System.out.println(Integer.toBinaryString(tmp));
}
------解决方案--------------------
4. 显示的是汉字unicode编码的十进制形式。2 出来的是十六进制形式的,是标准的 Unicode 编在码。
------解决方案--------------------
学习.........
------解决方案--------------------
void find(String src){//src为字段字符串
String p= "[\\W&^\\u4e00-\\u9fa0] ";
Pattern pp=Pattern.compile(p);
Matcher m=pp.matcher(src);
while(m.find()){
System.out.println(m.group());
}
}

------解决方案--------------------
我基础不好 请问
以\\u开头的是什么东西啊?
------解决方案--------------------
表示转义
字符的unicode码
------解决方案--------------------
沒碰過此問題,也進來學習一下。
  相关解决方案