0

私は Java から C++ に移行しようとしていますがbyte[]、Java に似たものが必要です。操作のような簡単な配列に使用できますstd::vector<>が、バイト操作uint8またはchar? ( & 0xff と >> number を使用して、より大きな整数を配列にパックすることがたくさんあるので、迅速にする必要があります)

4

2 に答える 2

3

uint8これが8ビットの符号なし整数型であると仮定すると、「通常の」C ++実装の主な違いは、char必ずしも符号なしではないということです。

「通常ではない」C++実装では、さらに大きな違いがあるchar可能性があります。8ビットではない可能性があります。しかし、それでは、uint8とにかくそのような実装で何を定義しますか?

符号の違いが重要かどうかは、使用方法によって異なりますが、経験則として、ビット演算子を使用して符号なし型を使用するのが最適です。intとは言うものの、どちらもビット単位で昇格し&(これも「通常の」C ++実装で)、実際には問題に&はなりません。実際には驚きはありません。ただし<<、負の符号付きの値を使用すると、未定義の動作が発生するため、それは避けてください。

したがって、符号なし型を使用してください。それを書くのに最も便利な方法がuint8であり、コードがオクテットを扱い、オクテットがあるシステムでのみ実行されることがわかっている場合charは、それを使用することもできます。

標準タイプを使用する場合は、を使用してunsigned charください。または、オクテットではないuint8_t「通常ではない」実装でコードがコンパイルされるのを意図的に防ぐため。char

于 2012-12-08T14:56:41.660 に答える
1

C++ の予約語は、、、charおよびsigned char/またはunsigned charです。uint8はおそらく の typedef シノニムですunsigned char

于 2012-12-08T14:51:41.677 に答える