c# - C# 和 Java 中的字节处理方式相同吗?

标签 c# java byte

我正在将一个 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/

相关文章:

java - OSX 中出现 NoSuchMethodError,但 Ubuntu 中没有

java - 了解 Java 字节

c# - context.SaveChanges() 在添加时出错

java - 更新现有 sqlite 数据库中的列,但 android 中没有任何变化

c# - excel Vb.Net 中的数字格式

java - 如何抓取访问方法的线程?

java - 位打包导致 Java 中的错误值

arrays - 如何过滤掉 Gerrit JSON api 响应的前几个坏字符

c# - 除以零 : int vs. float

c# - 如何调用基类中定义的私有(private) COM 接口(interface)的方法?