私はバイト配列を使用する小さなネットワーキングアプリケーションに取り組んでいます。伝統的には、これらは、char buf[] = ...
のようなもので宣言されます。C:uint8_tとしてバイト配列を宣言すると何か問題はありますか?
これはほとんどのチュートリアルでやっているようですが、実際に何が起こっているのかがわからなくなることがあります。たとえば、このような配列を印刷しようとすると、可視文字です。
一部の人have suggestedchars
の使用をやめて、代わりに最新のuint8_t
を使用してください。私はそれが非常に魅力的で、主に明示的が暗黙的よりも優れているという原則に基づいています。
したがって、これらの種類の配列をuint8_t buf[] = ...
と宣言すると何か問題がありますか?
私にとっては、どちらも間違っているとは思われません。 charはすべてのプラットフォームで8ビット(1バイト)として 'uint8_t'と定義されています。 unまたはsignedの唯一の違い/問題は、キャストまたはintへの変換時の符号拡張です。 –
@PaulOgilvie - ( 'char'は8ビットです)保証されていません。圧倒的に一般的ですが、保証されていません。 –
charが8ビット(感謝@OliverCharlesworth)である場合、charが必要な場合はcharを使用し、バイトがrequriedの場合はuint8_tを使用する必要があります(後者はネットワークインターフェイスで、前者は例えば文字処理です)。 –