u010089114
u010089114
采纳率30.3%
2019-05-11 15:36 阅读 585
已采纳

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条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2019-05-11 15:40

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

    点赞 评论 复制链接分享
  • weixin_45050591 冰利 2019-05-11 16:45

    byte转换成十六进制数,如果<16,那么是一个字符,如果在16~255之间,是2个字符,通常我们希望用2个字符表示一个字节,前面不足的补0。

    就是

    点赞 评论 复制链接分享

相关推荐