【发布时间】:2014-09-26 19:09:09
【问题描述】:
我正在使用 C# 将 long 转换为 8 槽字节数组
Byte[] Data = BitConverter.GetBytes(data.LongLength);
例如,如果data.LongLenght 是 172085,我得到以下数组 { 53,160,2,0,0,0,0,0 }
但是在我将它发送到我的 c++ 服务器之后,我想再次让它变得很长。
我试过了,但没有成功……
long fileLenght = 0;
for( int i=0;i < 8; ++i)
fileLenght = (fileLenght << 8) + Data[i];
【问题讨论】:
-
它是小端存储的,你必须向后迭代。请注意,C++ long 与 C# long 不同,您需要 long long。那种棘手的细节使得不通过网络发送二进制数据是个好主意。
-
@HansPassant 所说的。您应该定义一个逐字节的协议,以便对等方始终可以重新组装您的数据,无论需要语言/版本/接收它的什么,(并且也检测消息边界 - 您的 8 字节消息可能不会在一个接收中到达打电话)。
标签: c# c++ bitconverter