62,614
社区成员
发帖
与我相关
我的任务
分享
//关于网络这块我不懂,所以来请教一下.
public static void writeInet4Address(OutputStream output, Inet4Address value, int length) throws RTUException {
// 转化数据
Long lvalue = null;
if (value != null) {
byte[] bytes = value.getAddress();
//debug时候,Inet4Address value的值为:/192.168.1.156
//执行这句后,bytes 内容为[-64, -88, 1, -100],请教下这里是怎么变化/换算的.
if (bytes == null || bytes.length != 4) {
throw new RTUException("不是标准的IPv4地址值.");
}
//还有下面这些内容作用是什么,运行完后lvalue值为:3232235932. 再请教下换算过程.
lvalue = 0l;
lvalue += ((long) (bytes[0] & 0xFF) << 24);
lvalue += ((long) (bytes[1] & 0xFF) << 16);
lvalue += ((long) (bytes[2] & 0xFF) << 8);
lvalue += ((long) (bytes[3] & 0xFF) << 0);
}
}
lvalue = 0l;
lvalue += ((long) (bytes[0] & 0xFF) << 24); //我觉得应该是<<32,这里取bytes最大一位对应的数值
lvalue += ((long) (bytes[1] & 0xFF) << 16); //这里取的是bytes第三位对应的long值
lvalue += ((long) (bytes[2] & 0xFF) << 8); //这里取的是bytes第二位对应的long值
lvalue += ((long) (bytes[3] & 0xFF) << 0); //这里取的是bytes第一位对应的long值
//debug时候,Inet4Address value的值为:/192.168.1.156
//执行这句后,bytes 内容为[-64, -88, 1, -100],请教下这里是怎么变化/换算的.