在c#和java中以相同的方式处理字节?

时间:2012-09-26 01:40:16

标签: c# java byte

我正在将一个java android应用程序移动到windows metro,这个应用程序大量使用blob和解码(blob被编码为占用更少的空间

复制整个解码代码后,结果略有不同。

有些部分会询问字节值是否低于0,据我所知,c#上的字节是无符号的,所以我不明白为什么结果与android应用程序不一样。< / p>

这是一个片段。

         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;
        }

谢谢!

1 个答案:

答案 0 :(得分:1)

在Java中,byte已签名。实际上Java中没有无符号字节。它等同于C#的sbyte,所以这是你应该将它移植到的类型。