如果我单独取4个byte;
然后用floatNum = Float.intBitsToFloat((bytein[3]&0xFF)<<24 | (bytein[2]&0xFF)<<16 | (bytein[1]&0xFF)<<8 | (bytein[0]&0xFF));
可以得到正确的结果;
可是如果一次取byte[] buffer = new byte[ buffersize ];
然后通过循环
for (j = 0; j < Num ; j++){
byteInfo[0] = buffer[ j*4 ];
byteInfo[1] = buffer[ j*4+1 ];
byteInfo[2] = buffer[ j*4+2 ];
byteInfo[3] = buffer[ j*4+3 ];
floatNum = Float.intBitsToFloat((bytein[3]&0xFF)<<24 | (bytein[2]&0xFF)<<16 | (bytein[1]&0xFF)<<8 | (bytein[0]&0xFF));
}
这样得到的值就不对.
然后用floatNum = Float.intBitsToFloat((bytein[3]&0xFF)<<24 | (bytein[2]&0xFF)<<16 | (bytein[1]&0xFF)<<8 | (bytein[0]&0xFF));
可以得到正确的结果;
可是如果一次取byte[] buffer = new byte[ buffersize ];
然后通过循环
for (j = 0; j < Num ; j++){
byteInfo[0] = buffer[ j*4 ];
byteInfo[1] = buffer[ j*4+1 ];
byteInfo[2] = buffer[ j*4+2 ];
byteInfo[3] = buffer[ j*4+3 ];
floatNum = Float.intBitsToFloat((bytein[3]&0xFF)<<24 | (bytein[2]&0xFF)<<16 | (bytein[1]&0xFF)<<8 | (bytein[0]&0xFF));
}
这样得到的值就不对.
解决方案 »
- Java 面试题(A)——Java SE
- 求助,swing中JTextArea的内容怎么一行一行读出来?
- 大家帮我解决以下组件覆盖问题 JComboBox 被覆盖了
- java -cp 怎么执行A.jar下边的b.jar的.class
- 从来没有用过中文为包名的,今天测试在类中取得当前文件所在的相对路径与绝对路径时发现个这个问题,特此提醒一下,有谁设置包名为中文的
- 关于求文件路径的问题
- java 连接Oracle 9i数据库出错。请急救~~~
- 一个函数怎样返回两个值?
- 100求解,发到[email protected]
- Jcreator pro 2.5
- 小问问题,请各位解决一下,急等.......
- 关于jni的,大家都过来看看把,帮帮忙!
float* ff;
ff = new float[ 3000 ];
for (int k=0; k<3000 ; k++){
ff[k] = (float)2.357;
}
sAccept.Write((char*)ff, 12000, 10);
delete[] ff;
在java端接收前2963个数据时输出都是对的,可是到了后面的,全为0。这是什么原因啊?
同时注意网络字节序
int buffersize = n*4;
byte[] buffer = new byte[ buffersize ];
is.read( buffer );
for (j = 0; j < n ; j++){
byteInfo[0] = buffer[ j*4 ];
byteInfo[1] = buffer[ j*4+1 ];
byteInfo[2] = buffer[ j*4+2 ];
byteInfo[3] = buffer[ j*4+3 ];
float dd = Float.intBitsToFloat((bytein[3]&0xFF)<<24 | (bytein[2]&0xFF)<<16 | (bytein[1]&0xFF)<<8 | (bytein[0]&0xFF));
}
buffer有开相应的大小,可是到了后面的数就是接收不到。