Convert Java long to int64 in C++

Viewed 1630

I am receiving some numerical data from a Java client via socket connection on C++ server. When I receive 4 byte int type data, what I need is just using ntohl() function or reverse the bit order to convert to c++ int type. However, I'am having trouble trying to convert long data type from Java. No matter what I tried, I could not recover the correct value. I used LONG64, ULONG64 and int64_t as well, and none of them worked.

For example, when I send long s = 1 from Java, on C++ side I did:

int64_t size;
recv(client, (char *)&size, sizeof int64_t, 0);

if I do

size = ntohl(size)

Then size will become 0 whatever the original long value is in Java !

If I don't do ntohl() conversion, then size = 72057594037927936 for s = 1

I have hardly found any useful information on this topic and I would appreciate any suggestion.

1 Answers
Related