一个问题,总也想不通???

handyworkroom 2003-05-18 12:41:51
近来看了一段小程序 其中下面三行总也理解不了,请大家给说明一下:
String s="AB23ab张三"
byte[] ba=s.getBytes("BIG5");//这个不明白
...
Integer.toHexString((int)ba[i]&0xff);//这个&0xff是什么意思呀
...
Integer.toHexString((int)s.charAt(i)&0xffff);//这里0xffff又是什么意思呢,是不是与前者位数不同呢,那么为什么些行的打印结果却是有二位的,还有四位的呢,能不能都显示为四位
...全文
120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
seven1996 2003-05-22
  • 打赏
  • 举报
回复
Integer.toHexString((int)ba[i]&0xff);
Integer.toHexString((int)s.charAt(i)&0xffff);
与(AND)运算&
a&b
只有a,b都是1的时候上述表达式的植才是1
否则就是0
ff:11111111
按照上述运算标准就实现了用11111111填充高位
填充高位的方法就是这样的
1个字的长度是8bit,双字就是16bit
ffff:1111111111111111
这样用&就能实现
ganh 2003-05-18
  • 打赏
  • 举报
回复
byte[] ba=s.getBytes("BIG5");
//把字符串按照 BIG5 编码方式 变成 byte 数组
Integer.toHexString((int)ba[i]&0xff);
//&0xff 用 11111111 填充高位 ,变成双字节的编码
Integer.toHexString((int)s.charAt(i)&0xffff);
// 用 ff 填充高位,变成双字的编码
shine333 2003-05-18
  • 打赏
  • 举报
回复
1, 获取big5
2, 获取ba[i](共32位)的后8位,
3, 后16位,

上面说的位是bit,也就是一个0或1

for(int i=0;i<1000;i++){
String s=Integer.toHexString(i);
while(s.length()<4){
s="0"+s;
}
System.out.println(s);
}
handyworkroom 2003-05-18
  • 打赏
  • 举报
回复
真的还是没理解,对于第2个问题是用11111111填充高位,那么对于第3个问题,为什么就成了,要用ff填充高位了呢???
还有就是又增加两上新问题,就是什么是用...填充高位和双字编码???

62,623

社区成员

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

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