u010089114
2019-05-11 15:36
采纳率: 0%
浏览 651
已采纳

2进制转16进制,为什么length()为1要加0

private String bytesToHexString(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < bytes.length; i++) {
            System.out.println("bytes[i}  "+bytes[i]);
            String hex = Integer.toHexString(0xFF & bytes[i]);

      //为什么length()为1要加0
            if (hex.length() == 1) {
                sb.append('0');
            } 
            sb.append(hex);  
        }

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • threenewbee 2019-05-11 15:40
    最佳回答

    byte转换成十六进制数,如果<16,那么是一个字符,如果在16~255之间,是2个字符,通常我们希望用2个字符表示一个字节,前面不足的补0。
    这样比较容易理解。
    否则遇到字符串11,这到底是1个字节,值是17,还是2个字节,分别是1和1,就混淆了。因此,对于2个字节,分别是1和1,我们就写成0101,遇到11,那一定是17.

    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题