我來自Java到C++,我需要類似於Java的byte[]
。我可以使用std::vector<>
來進行簡單的數組操作,但我需要回答在C++中使用的字節操作uint8
或char
? (我有很多關在陣列包裝更大的整數與& 0xFF和>>號碼,以便它必須是快速的)C++中用於字節操作uint8或char的是什麼?
0
A
回答
3
假設uint8
是一個8位無符號整數類型,「正常」C++實現的主要區別是char
不一定是無符號的。
在「不正常的」C++實現上,可能會有更大的差異 - char
可能不是8位。但是,那麼你會怎麼定義uint8
來實現這樣的實現呢?
符號差異是否重要取決於您使用它的方式,但根據經驗,最好使用帶位運算符的無符號類型。也就是說,無論如何它們都被升級到int
(又一次在「正常」的C++實現中),並且它對於&
真的沒有關係,它在實踐中並不會引起意外。但使用<<
上的負值有符號值會導致未定義的行爲,所以請避免這種情況。
所以,使用無符號類型。如果你寫的最方便的方法是uint8
,並且你知道你的代碼是以八位字節爲單位進行處理的,並且只會在char
是八位字節的系統上運行,那麼你也可以使用它。
如果要使用標準類型,請使用unsigned char
。或uint8_t
爲了有意防止您的代碼在「非正常」實現上編譯,其中char
不是八位字節。
1
C++保留字char
,signed char
,和/或unsigned char
。 uint8
可能是unsigned char
的typedef同義詞。
相關問題
- 1. 什麼是'char'關鍵字用於?
- 2. 在C++中使用char *或void *或其他字節字段?
- 3. 這個操作在C++中做了什麼:char c&= 0x5F?
- 4. 字節操作c#
- 5. C中的這個操作是什麼?
- 6. C++中的操作符「」是什麼?
- 7. 爲什麼`equal`對於C++中的const char *起作用?
- 8. C的「char」使用什麼字符集?
- 9. c中的(char *)0是什麼意思?
- 10. 什麼是C++中的char()類型?
- 11. 爲什麼在Rust中'char'的大小是4個字節?
- 12. C&C++中的'&'是什麼,它在perl中的等價操作符是什麼?
- 13. 字節碼操作的危害是什麼(如果有的話)?
- 14. 如何從字節數組([UInt8])獲取一個字節(UInt8)?
- 15. 或用於字符串的C#中的操作數
- 16. 什麼是最簡單的字節級操作?
- 17. MongoDB中用於SQL中的減號集操作的等效操作是什麼?
- 18. c中的字節數組操作#
- 19. C#中的位圖字節操作
- 20. 在C#中的字節操作#
- 21. 什麼是字節的MINVALUE []在C#
- 22. CHAR_LENGTH爲字節或CHAR
- 23. C:char和char操作的結果是什麼?
- 24. char []中的「length」是什麼?
- 25. C++ std :: ctype的作用是什麼<char> :: widen()?
- 26. 什麼是char *?
- 27. 刪除用於字節轉換的char *
- 28. 函數調用中,操作符是什麼,操作數是什麼?
- 29. 操作c = a +++ b是什麼意思?
- 30. 什麼是C++ >>>操作
在C++中沒有'uint8'這樣的類型。 –
我想知道你爲什麼使用''uint8'' /''char''如果你打包更大的整數。是否有任何理由不留在更大的整數表示中? –