实际上,结果 是
相同的。像其他整数类型一样,字节值可以解释为有符号或无符号。例如,如果被解释为无符号,则
10001111对应于
143(您的第二个C#值)。但是,如果将其解释为带
符号
(使用二进制补码),则其值为
-113(您的第二个Java值)。
因此,差异似乎是由于您的值被格式化为Java中的签名格式,而未使用C#签名的格式。如果要在C#中获取带符号的字节,可以使用:
sbyte[] encryptionKeyBytesSigned = encryptionKeyBytes.Select(b => (sbyte)b).ToArray();
但是,请注意,这不仅是仅在显示值时出现的格式问题。保存到文件后,两个结果应该相同。



