我有一個變量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