我有一个变量s
,其类型为size_t
,变量buffer
的类型为unsigned char
。我希望以网络顺序将buffer
中的这个变量保存为4个字节。 我该怎么办?将size_t保存为无符号字节
0
A
回答
2
char c8[8] = {0};
size_t s = 0x1233456789abcdef0, s_be = 0;
if (4 == sizeof(s))
{
s_be = htonl(s);
}
else if (8 == sizeof(s))
{
s_be = htobe64(s);
}
else
{
assert(0);
}
memcpy(c8, &s_be, sizeof(s_be));
对于htobe64()
看看这里:https://stackoverflow.com/a/4410728/694576
+0
对于一个迂腐的解决方案,如何'32 == sizeof(s)* CHAR_BIT'或'sizeof(uint32_t)== sizeof(s)'? – chux
2
size_t myvar;
myvar = htonl(myvar); // For the endian issues
memcpy(buffer, &myvar, sizeof(size_t));
+0
这只适用于4个字节宽的整数。 – alk
相关问题
- 1. 将无符号字节流转换为有符号字节流Golang
- 2. 将带符号格式的字节转换为无符号字节
- 3. 保存32位无符号字节数组到文件系统
- 4. C将无符号字符转换为无符号字符:4
- 5. 将std :: string(保证数字)转换为无符号字符
- 6. 号(返程)(INT到无符号整数))的为size_t损失
- 7. 将字节保存到xmlfile。无效的Unicode字符
- 8. 如何将一个无符号字符数组保存到MySQL
- 9. 在C++中将无符号字符(字节)数组转换为无符号短符号
- 10. Java无符号字节[2]为int?
- 11. 将一个有符号的字节变成一个无符号的半字节
- 12. 将字符串转换为字节(无符号字符)数组cpp
- 13. 在无符号字节变量中表示有符号字节
- 14. C#无法将撇号保存为XML
- 15. SWIG无符号字符和字节[]
- 16. 无符号字符[],位或字节?
- 17. 为什么使用LWJGL将这些带符号字节读为无符号字节?
- 18. 将字节阵列保存为jpeg
- 19. 将字节数组保存为.class
- 20. 将网格保存为字节
- 21. iPhone:CFReadStreamRead存储字节作为签名,而不是无符号的
- 22. 无法将字符串/节点保存到XML WP8
- 23. 无法将参数5从'SIZE_T *'转换为'size_t *' - 为什么?
- 24. 将无符号字符转换为LPCSTR
- 25. 将NSData转换为无符号字符*
- 26. 作为一个无符号字节读单个字节
- 27. 将小字节顺序中的4个字节转换为无符号整数
- 28. 将无符号字节数组转换为Structs数组
- 29. 将DWORD字节数组转换为无符号长数
- 30. sbcl:将(无符号字节32)转换为单浮点数
确定'size_t'如果宽4个字节的系统上? – alk
这是64位系统..我如何检查size_t有多宽?我也可以将它保存为'uint32_t'或任何类型,这对于此目的会更好。 'uint32_t'在64位系统上是4个字节,不是吗? – MaMu
在64位系统上,我希望'sizeof(size_t)'返回8. – alk