我正在将一个Java应用程序转换为C#,并且我有一个关于底层字节流的一般性问题。
在C#中,“byte”是无符号的,而在Java中则是有符号的。
这对我在比较字节等价性时的代码部分会产生什么影响呢?例如:
Java 代码
public final static byte IAC = (byte)255;
...
void parseBuffer(byte[] bb, int len) {
try {
for(int i = 0;i < len; i++) {
if(bb[i] == IAC)
DoSomething();
}
}
}
我需要对IAC变量的声明做什么吗?它会是除(byte)255之外的其他内容吗?
提前感谢您的帮助。
byte
值具有数值255,而在Java中它具有数值-1。这很不幸(你几乎从不想把字节视为有符号值),但你应该没问题。只需尝试将它们视为8位的集合而不是数字-这会让你的生活更轻松 :) - Jon Skeet