中国字体设计网站,广告设计公司投标书范文,模板建站适屏,检察门户网站 建设意义C#代码里就是小端序,Java代码里就是大端序#xff0c; 大端位:big endian,是指数据的高字节保存在内存的低地址中#xff0c;而数据的低字节保存在内存的高地址中#xff0c;也叫高尾端 小端位:little endian,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存…C#代码里就是小端序,Java代码里就是大端序 大端位:big endian,是指数据的高字节保存在内存的低地址中而数据的低字节保存在内存的高地址中也叫高尾端 小端位:little endian,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中也叫低尾端 这个最早是指一个鸡蛋的大头和小头分别被称为大端和小端出自格列佛游记两个国家因为吃鸡蛋从大头开始还是小头开始发生了战争。这是翻译的问题大小端位是直译高低尾端是意译显然意译的更好理解一点。 具体是什么意思呢看一个具体的例子假如11223344存储在内存中 地址有顺序高尾端就是按照地址的顺序尾端的位置放高字节的数据低尾端就是地址的尾端放低字节的数据。就是两种存储方式各有利弊具体我就不赘述了主要是在用的时候需要注意
我在C#代码里使用
BitConverter.ToInt64(buff, index);
BitConverter.ToInt16(bufftemp, 0);
BitConverter.ToDouble(buff, index);
BitConverter.ToSingle(rSRPBytes, 0);来解析数据然后换到Java里就不行最后检查一下才发现C#使用的是小端序Java使用的是大端序然后手动调整了一下就成功了分享几个我写的工具方法供大家参考
public double arr2Double(long[] arr,int index){long[] subArr new long[8];System.arraycopy(arr, index, subArr, 0, 8);String binaryString ;for(int i 7;i -1;i--){String binary Long.toBinaryString(subArr[i]);while(binary.length() 8){binary 0 binary;}binaryString binaryString binary;}long bits Long.parseUnsignedLong(binaryString, 2);double result Double.longBitsToDouble(bits);return result;
}public long arr2Long(long[] arr,int index){long[] subArr new long[8];System.arraycopy(arr, index, subArr, 0, 8);String binaryString ;for(int i 7;i -1;i--){String binary Long.toBinaryString(subArr[i]);while(binary.length() 8){binary 0 binary;}binaryString binaryString binary;}long result Long.parseUnsignedLong(binaryString, 2);return result;
}public short arr2Short(long[] arr,int index){long[] subArr new long[2];System.arraycopy(arr, index, subArr, 0, 2);String binaryString ;for(int i 1;i -1;i--){String binary Long.toBinaryString(subArr[i]);while(binary.length() 8){binary 0 binary;}binaryString binaryString binary;}short result Short.parseShort(binaryString, 2);return result;
}public int arr2Int(long[] arr,int index){long[] subArr new long[4];System.arraycopy(arr, index, subArr, 0, 4);String binaryString ;for(int i 3;i -1;i--){String binary Long.toBinaryString(subArr[i]);while(binary.length() 8){binary 0 binary;}binaryString binaryString binary;}int result Integer.parseUnsignedInt(binaryString, 2);return result;
}public float arr2Float(long[] arr,int index){long[] subArr new long[4];System.arraycopy(arr, index, subArr, 0, 4);String binaryString ;for(int i 3;i -1;i--){String binary Long.toBinaryString(subArr[i]);while(binary.length() 8){binary 0 binary;}binaryString binaryString binary;}int bits Integer.parseUnsignedInt(binaryString, 2);float result Float.intBitsToFloat(bits);return result;
}