这段java代码什么意思?急急急 求讲解

xingyunxlm2 2016-10-12 08:25:20
public static String encodeBytes(byte[] bytes) {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < bytes.length; i++) {
buffer.append((char) (((bytes[i] >> 4) & 0xF) + ((int) 'a')));
buffer.append((char) (((bytes[i]) & 0xF) + ((int) 'a')));
}
return buffer.toString();
}
...全文
267 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘大神仙 2016-10-17
  • 打赏
  • 举报
回复
(char) ( ((bytes[i] >> 4) & 0xF) + ( (int) 'a') ) bytes[i] 右位移4位(将bytes[i]转换成二进制,将数值右平移4位,左边空出来的补0,右边溢出的丢弃。不能纯碎的乘以16,因为二进制数最左边的一位为符号位,1代表负数,0代表正数。当右位移之后,最左边一位有可能从1变成了0) & 与运算,两个二进制数,相对应的位置上同为1时,才为1.(例如:1010 &1001 = 1000) 0xF 十六进制数,0x代表十六进制,F是15,二进制数为1111, (int) 'a' 将字符a转为int类型,可以查ASCII编码表,小写a代表97.
当作看不见 2016-10-12
  • 打赏
  • 举报
回复
将这个比特数组编码 每个数组元素向右移四位(乘16),与1111进行与运算,再加97(没记错的话a是97), 这个不用管,就是编码方式,知道这个东西就是将比特数组编码就行了

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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