我正在将一个 java android 应用程序移动到 Windows Metro,该应用程序大量使用 blob 和解码(对 blob 进行编码以占用更少的数据库空间
复制整个解码代码后,结果略有不同。
有一些部分会询问字节值是否低于 0,据我了解,c# 上的字节总是无符号的,所以我不明白为什么结果与 android 应用程序不同。
这是一个片段。
for (int i = 0; i < length; i++) {
s[six] = (byte) (blob[i] ^ pronpassword[ix]); //pronpass is a string password
if (s[six] == 0) {
s[six + 1] = (byte)'-';
s[six] ^= 128;
s[six] = (byte) PRON_MAP[(byte) s[six]];
six++;
} else {
s[six] = (byte) PRON_MAP[(byte) s[six]];
}
six++;
ix++;
if (ix == plen)
ix = 0;
}
谢谢!
最佳答案
在Java中,字节
是有符号的。 Java中实际上不存在无符号字节这样的东西。它相当于 C# 的 sbyte
,因此您应该将其移植到该类型。
关于c# - C# 和 Java 中的字节处理方式相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12593414/