Java BSD校验和和和位操作说明
我试图理解用Java语言编写的BSD校验和计算算法 维基写道:Java BSD校验和和和位操作说明,java,checksum,bsd,Java,Checksum,Bsd,我试图理解用Java语言编写的BSD校验和计算算法 维基写道: byte checksum(byte[] input) { byte checksum = 0; for (byte cur_byte: input) { checksum = (byte) (((checksum & 0xFF) >>> 1) + ((checksum & 0x1) << 7)); // Rotate the accumulator checksum = (by
byte checksum(byte[] input) {
byte checksum = 0;
for (byte cur_byte: input) {
checksum = (byte) (((checksum & 0xFF) >>> 1) + ((checksum & 0x1) << 7)); // Rotate the accumulator
checksum = (byte) ((checksum + cur_byte) & 0xFF); // Add the next chunk
}
return checksum;
字节校验和(字节[]输入){
字节校验和=0;
for(字节cur\u字节:输入){
校验和=(字节)((校验和&0xFF)>>>1)+(校验和&0x1)>>1)+(校验和&0x1)
b&0xFF通常用于将有符号字节转换为位相同的整数。在这种情况下,不需要-(byte)(b&0xFF)与(b)相同。例如((byte)-1)&0xFF=255
12345678>>>1 01234567
12345678