随机生成汉字问题,不明白这个是啥

Faust689 2017-08-03 08:10:23
hightpos =(176+Math.abs(random.nextInt(39)));
lowpos =(161+Math.abs(random.nextInt(93)));
byte[] b = new byte[2];
b[0] =(new Integer(hightpos).byteValue());
b[1] =( new Integer(lowpos).byteValue());
这个高,低位是啥意思,还有 Integer(hightpos).byteValue()); 这个取得是什么,蟹蟹


...全文
286 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
解开者 2017-08-04
  • 打赏
  • 举报
回复
是的,C0EE是16进制,需要依次转为10进制 2字节表示的汉字,可以理解为256进制的两位数;256是一字节的取值范围
逗泥丸的平方 2017-08-04
  • 打赏
  • 举报
回复
引用 4 楼 Faust689 的回复:
[quote=引用 3 楼 windowsoahil 的回复:] 高位176-215、低位161-254范围内的gbk字符才是汉字,这个范围之外的就不是汉字了
嗯,谢谢大哥的解答,小弟愚昧还是有点问题,还是范围的事,就好比”李”的gbk编码是C0EE,是不是co就是高位,ee就是地位,还有那个*256是规则吗? [/quote] 十六进制的2位不就是256吗 ...
Faust689 2017-08-04
  • 打赏
  • 举报
回复
引用 3 楼 windowsoahil 的回复:
高位176-215、低位161-254范围内的gbk字符才是汉字,这个范围之外的就不是汉字了
嗯,谢谢大哥的解答,小弟愚昧还是有点问题,还是范围的事,就好比”李”的gbk编码是C0EE,是不是co就是高位,ee就是地位,还有那个*256是规则吗?
解开者 2017-08-03
  • 打赏
  • 举报
回复
高位176-215、低位161-254范围内的gbk字符才是汉字,这个范围之外的就不是汉字了
Faust689 2017-08-03
  • 打赏
  • 举报
回复
谢谢大哥,不是很懂,那这个 hightpos =(176+Math.abs(random.nextInt(39)));176,39这俩个数字是咋来的,是随机的?
解开者 2017-08-03
  • 打赏
  • 举报
回复
这个应该和Java没啥关系。 对于gbk编码,用2字节表示一个汉字,就对应上边的byte[2]数组;其中0是高位,1是低位 而每个gbk编码的字符,其编码值就=高位*256+低位 有一个非常简单的方法验证gbk字符:在一般windows系统,按住alt键,依序从小键盘输入编码字符,再松开alt键 比如我的操作:按住alt——依次从小键盘按下4、9、3、9、0——松开alt 打出一个汉字:“李” 而49390=192*256+238 所以高位=192,低位=238 将gbk编码的字符串转为byte数组即可得到汉字的gbk编码,且分高低位

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧