【发布时间】:2014-05-07 02:53:25
【问题描述】:
我在将 C++ 整数转换为 Java 整数时遇到问题。
在 C++ 中:
//while loop
int *bla = new int; *bla = counter; //counter starting from 0
counter++;
if ((size = send(client, bla, 4, 0)) == -1) //sizeof(int) show 4 bytes so I put it there directly
{
cerr << "Error." << endl;
return -1;
}
在 Java 中:
//while loop
//DataInputStream inFromServer;
System.out.println(inFromServer.readInt()); //it should read 4 bytes and interpret it as int
Java 的结果:
0 //for 0
16777216 //for 1
33554432 //for 2
50331648 //etc.
67108864
83886080
100663296
117440512
134217728
150994944
167772160
184549376
201326592
218103808
234881024
251658240
(我正在使用 g++)
编辑:两者(java 和 c++ 应用程序)都运行在带有 Raspian OS 的同一个 Raspberry Pi 上(所以它是 localhost)
【问题讨论】:
-
你的 C++ 代码有问题。首先修复内存问题和发送检查
-
如果它解决了您的问题,请不要忘记将答案标记为解决方案。此外,最好从一开始就寻找正在翻转数据的字节顺序以避免将来出现问题。
-
刚刚遇到this link 指出DataInputStream 是大端ONLY(意味着它会在需要时自动转换数据),如果您的机器是小端(其中according to this Raspberry pi 是)。看到这个帖子就想到了。
标签: java c++ type-conversion