0
A
回答
2
這取決於int
大小。如果是32位,請使用htonl
和ntohl
。如果它是16位,請使用htons
和ntohs
。
如果是64位的,有這個問題並沒有標準的功能,所以你必須推出自己的。下面是一個例子,說明如何以便攜的方式做到這一點(即,不依賴於字節順序):
uint64_t htonll(uint64_t x)
{
uint64_t result;
unsigned char *c;
c = (unsigned char *)&result;
c[0] = x >> 56;
c[1] = (x >> 48) & 0xFF;
c[2] = (x >> 40) & 0xFF;
c[3] = (x >> 32) & 0xFF;
c[4] = (x >> 24) & 0xFF;
c[5] = (x >> 16) & 0xFF;
c[6] = (x >> 8) & 0xFF;
c[7] = x & 0xFF;
return result;
}
uint64_t ntohll(uint64_t x)
{
uint64_t result;
unsigned char *c;
c = (unsigned char *)&x;
result = (uint64_t)c[7];
result |= (uint64_t)c[6] << 8;
result |= (uint64_t)c[5] << 16;
result |= (uint64_t)c[4] << 24;
result |= (uint64_t)c[3] << 32;
result |= (uint64_t)c[2] << 40;
result |= (uint64_t)c[1] << 48;
result |= (uint64_t)c[0] << 56;
return result;
}
相關問題
- 1. 無法從「詮釋」轉換爲「詮釋*」
- 2. 網站無法隱式轉換類型「詮釋」到「字符串」
- 3. 類型爲int *(*)(INT *,詮釋*(*)())
- 4. 轉換詮釋到整數
- 5. 不能類型「詮釋」隱式轉換爲「短」
- 6. 將主機數據包轉換爲.net
- 7. 如何將數據類型從整數轉換爲文本?
- 8. 無效的轉換,從「詮釋」到「詮釋*」 [-fpermissive]
- 9. 轉換型家庭實例來詮釋
- 10. 如何將網絡地圖網站轉換爲手機
- 11. 錯誤「不能轉換類型的值‘詮釋’預期參數類型‘UINT’
- 12. 轉換詮釋返回NaN
- 13. 轉換詮釋爲String LINQ表達式
- 14. C#不能轉換詮釋爲雙
- 15. 浮點無需轉換詮釋爲int
- 16. QT5 - 無法從 '詮釋' 轉換參數2「爲const char *
- 17. 將C數據類型轉換爲Python
- 18. MATLAB:從char數據類型轉換爲符號數據類型
- 19. 類型錯誤「詮釋」
- 20. 如何將數據行字段轉換爲泛型類型?
- 21. 類型轉換問題與詮釋在Java
- 22. 錯誤:「不能隱式轉換類型‘詮釋’到‘布爾’」
- 23. 錯誤無法隱式轉換類型「詮釋」到「串」 C#
- 24. 無法隱式轉換類型「詮釋」到「T」
- 25. 無法隱式轉換類型「詮釋」到「INT []」
- 26. 無法隱式轉換類型 '詮釋' 到
- 27. 如何將一種數據類型轉換爲另一種數據類型?
- 28. 如何將類型爲Type的JArray轉換爲類型數組?
- 29. 如何將元數據註釋轉換爲摘要註釋
- 30. 如何將數據幀列轉換爲數字類型?
'man htons'。它列出了所有的變體。 –
其提升到長髮射前和投退爲int ofter收到 – user3528438
我覺得命名約定與「S」和「L」後綴較差。或許它們應該是16位和32位,就像位數。 – jarmod