私は Java から C++ に移行しようとしていますがbyte[]
、Java に似たものが必要です。操作のような簡単な配列に使用できますstd::vector<>
が、バイト操作uint8
またはchar
? ( & 0xff と >> number を使用して、より大きな整数を配列にパックすることがたくさんあるので、迅速にする必要があります)
2 に答える
uint8
これが8ビットの符号なし整数型であると仮定すると、「通常の」C ++実装の主な違いは、char
必ずしも符号なしではないということです。
「通常ではない」C++実装では、さらに大きな違いがあるchar
可能性があります。8ビットではない可能性があります。しかし、それでは、uint8
とにかくそのような実装で何を定義しますか?
符号の違いが重要かどうかは、使用方法によって異なりますが、経験則として、ビット演算子を使用して符号なし型を使用するのが最適です。int
とは言うものの、どちらもビット単位で昇格し&
(これも「通常の」C ++実装で)、実際には問題に&
はなりません。実際には驚きはありません。ただし<<
、負の符号付きの値を使用すると、未定義の動作が発生するため、それは避けてください。
したがって、符号なし型を使用してください。それを書くのに最も便利な方法がuint8
であり、コードがオクテットを扱い、オクテットがあるシステムでのみ実行されることがわかっている場合char
は、それを使用することもできます。
標準タイプを使用する場合は、を使用してunsigned char
ください。または、オクテットではないuint8_t
「通常ではない」実装でコードがコンパイルされるのを意図的に防ぐため。char
C++ の予約語は、、、char
およびsigned char
/またはunsigned char
です。uint8
はおそらく の typedef シノニムですunsigned char
。