protobuffers-长值更改 我有一个C++ 32位GRPC服务器。

protobuffers-长值更改 我有一个C++ 32位GRPC服务器。,c++,protocol-buffers,grpc,C++,Protocol Buffers,Grpc,客户端是一个java 64位GRPC应用程序 我正在向服务器发送包含长消息的消息 当服务器收到消息时,该值已更改 问题 在客户端,我发送151234560000 在服务器上我看到了517111808。#包括 #include <cstdint> using namespace std; int64_t YourFunctionToRead() { // don't use 'long' as type // it only guarantees to be at le

客户端是一个java 64位GRPC应用程序

我正在向服务器发送包含长消息的消息

当服务器收到消息时,该值已更改

问题

在客户端,我发送151234560000

在服务器上我看到了517111808。

#包括
#include <cstdint>

using namespace std;

int64_t YourFunctionToRead()
{
   // don't use 'long' as type
   // it only guarantees to be at least 32bit, but certainly doesn't have to be 64bit
   // while you need 64bit type
   int64_t veryLongIntToRead = GRPCFunc();
   return veryLongIntToRead;
}
使用名称空间std; int64\t您的函数读取() { //不要使用“long”作为类型 //它只保证至少为32位,但肯定不必为64位 //而您需要64位类型 int64_t verylongenttoread=GRPCFunc(); 返回verylongtoread; }

此外,你可能有持久性问题。Java运行时不是big-endian吗?C++当然不会假设很少或大的字节序。GPRC很可能会为您处理此问题。值得思考。

值没有改变,似乎您只读取了long中的前4个字节,而不是8个,
517111808->0x1ED2'8000
151234560000->0x160'1ED2'8000
看到了吗?你应该把代码放在你读取值的地方,你用什么数据类型来保存这个值?我们需要一个或一个神奇的水晶球来知道你的代码出了什么问题