(b& 0xff)是什么意思?

时间:2013-08-13 17:18:55

标签: java hash hex sha1

使用Java,我在MessageDigest实例上使用SHA1将String值转换为哈希值。我正处于创建哈希对象的位置:

MessageDigest md = MessageDigest.getInstance("SHA1");
byte[] hash = md.digest(password.getBytes("UTF-8"));

我不明白的部分是b& 0xff表示以下代码:

StringBuilder sb = new StringBuilder(2*hash.length);
for(byte b : hash) {
   sb.append(String.format("%02x", b & 0xff));
}

我知道%02x意味着指定一个格式,其中有两个字符使用十六进制,但我不知道第二个参数是什么,它对每个字节做了什么或它意味着什么。一个简单的解释会很棒! : - )

1 个答案:

答案 0 :(得分:2)

那是bitwise AND operatorb & 0xff获取b的最后一个字节。由于b已经是byte,我认为没有任何意义:String.format的结果是相同的。