Anyone know what follow code does?
问题是跟随运营商:&和|,和0xfc
salt[0] = (byte)((salt[0] & 0xfc) | (saltLen & 0x03));
salt[1] = (byte)((salt[1] & 0xf3) | (saltLen & 0x0c));
salt[2] = (byte)((salt[2] & 0xcf) | (saltLen & 0x30));
salt[3] = (byte)((salt[3] & 0x3f) | (saltLen & 0xc0));
答案 0 :(得分:3)
问题是跟随运营商:&和|,和0xfc
答案 1 :(得分:2)
上面的评论很好地解释了它正在做什么,但是如果你正在寻找运营商的细分:
and
salt[i]
和十六进制数字(&
运算符)。and
上执行按位salt[i]
和第二个十六进制数字。or
运算符)的结果执行按位|
。byte
salt[i]
结果是注释块中注明的内容。格式0xc0
的数字以及十六进制的数字,这是16的基数。十六进制中的c0
相当于十进制的16*12 + 16*0 = 192
。在十六进制中,由于您在9处用完了数字,因此您开始使用字母。因此,a = 10,b = 11,c = 12,d = 13,e = 14,f = 15,f变为最高的“数字”,因为当你到达16时你会移动一个地方(16是基础)。
另见:
答案 2 :(得分:0)
// Split salt length (always one byte) into four two-bit pieces and
// store these pieces in the first four bytes of the salt array.
这是一个自大的答案,但我的目的是表明它已经回答了,所以如果您需要更多细节,请告诉我:))