我将一个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中,byte已签名。实际上,Java中没有像无符号字节这样的东西。它等效于C#的sbyte,因此这是您应将其移植到的类型。

关于c# - 在C#和Java中以相同的方式处理字节?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12593414/

10-10 23:53