[英]Java Socket vs. C# TcpClient
我正在将Java应用程序转换为C#,我有一个关于底层字节流的一般问题。
“字节”在C#中是无符号的,而不是在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变量的声明做任何事情? 它会是其他任何东西(字节)255吗?
感谢您的帮助。
我是否需要对IAC变量的声明做任何事情?
不,这绝对没问题。 IAC的最终值为-1,但这很好,仍然代表一个设置了所有位的字节。 如果从C#端发送值为255的字节,它将在Java端正确拾取。
另一种替代方法是使用更大的数据类型(例如,为方便起见使用int
,并使用位掩码以[0,255]范围内的值结束:
public static final int IAC = 255;
...
void parseBuffer(byte[] bb, int len) {
try {
for(int i = 0; i < len; i++) {
int value = bb[i] & 0xff; // To get a value in the range [0, 255]
if (value == IAC) {
DoSomething();
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.