以下是从字节数组中获取int16(短)值的最有效方法吗?
inline __int16* ReadINT16(unsigned char* ByteArray,__int32 Offset){
return (__int16*)&ByteArray[Offset];
};
Run Code Online (Sandbox Code Playgroud)
如果字节数组包含与机器相同的endian格式的字节转储,则调用此代码.欢迎替代方案.
我正在使用Csharp tcp套接字在客户端和服务器之间发送数据.现在问题,因为我看到它或我认为它是tcp是一个流协议,并不会推送(发送)数据,除非它们是足够的数量.
例如,我想发送一些数据,无论它只是说它的8个字节长.我所看到的行为无论我等多久它都不会发送数据,除非我推动它更多地推迟到达tcp缓冲区.
所以我的问题是.如果我想通过tcp发送少量数据,我需要在末尾添加垃圾以强制套接字发送.(我不会对此感觉良好)或者是他们可以强制流的前段发送的另一种方式.
提前致谢.我仍在学习tcp,所以请原谅无知.
如果我通过此代码将浮动存储在文件中
fwrite((void*)(&v), sizeof(v), 1, f); // v is a float.
Run Code Online (Sandbox Code Playgroud)
使用此代码读取文件的程序多久会导致运行时错误,因为float是8个字节而不是4个?
float v;
fread((void*)(&v), sizeof(v), 1, f);
return v;
Run Code Online (Sandbox Code Playgroud)
我可以总是读取4个字节并将其转换为8字节的浮点数吗?那会更便携吗?
强调不同的Windows平台64位与32位.