为什么 DigestOutputStream 将 int 转换为 byte?

Why DigestOutputStream cast int to byte?

DigestOutputStream计算其内容的哈希值,例如MD5哈希值。如果我们查看它的来源,我们会看到:

public void write(int b) throws IOException {
    digest.update((byte)b);
    out.write(b);
}

它将 int(32 位)转换为 byte(8 位)。这样的选角可以吗?

OutputStream.write(int)的约定是写入参数的最低8字节。这里没有什么神秘之处。如果 OutputStream 正在写入文件,也会发生同样的事情。