我来自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''如果你打包更大的整数。是否有任何理由不留在更大的整数表示中? –