我有系统(在 c#中)来控制用户访问
对于特定情况,我需要在 java 中使用相同的访问控制器
该控制器具有密码算法(rijndael)。
我的问题是这个算法使用字节数组(byte[]
); c#中的字节类型为0 to 255
, java 中的字节类型为-128 to 127
。这种差异会产生不同的结果。
如何使这两个代码使用相同的字节数组?
PS:我无法更改c#代码;如果可以,我会使用sbyte而不是byte。
答案 0 :(得分:4)
当您将无符号字节[]读入有符号字节[]时,在此过程中不会损坏任何位,也不会丢失任何数据。不同之处仅在于如何处理顶部位。如果你想在0到255之间的值中转换一个有符号的字节,你可以&它有0xFF,例如
int value = bytes[i] & 0xFF;
答案 1 :(得分:1)
有人为您可以使用的无符号类型开发了一个库: https://github.com/jOOQ/jOOU