protobuffers - 长期价值变化

时间:2018-04-13 11:57:39

标签: c++ protocol-buffers grpc

我有一个c ++ 32位GRPC服务器。

客户端是java 64bit GRPC应用程序。

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

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

问题

在客户端,我发送1512345600000。

在服务器上我看到517111808。

1 个答案:

答案 0 :(得分:0)

#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;
}

此外,您可能会遇到语言问题。 Java运行时不是大端吗? C ++肯定不会假设很少或大端。 GPRC最有可能为您处理此问题。只是值得深思。