C/C++ で次のことを行う方法を正確に見つけることができません。
入力: 16 進値、例: ffffffffff...
入力を読み取るために、次のコードを試しました。
uint16_t twoBytes;
scanf("%x",&twoBytes);
これで問題なく動作しますが、2 バイトを 1 バイトの値に分割するにはどうすればよいですかuint8_t
(または、最初のバイトのみを読み取ることもできます)。入力から最初のバイトを読み取り、選択した位置のバイト マトリックスに格納します。
uint8_t matrix[50][50]
私は C/C++ での入力の書式設定/読み取りにあまり熟練していないため (これまでは scanf しか使用していませんでした)、これを簡単に (できれば高速に) 行う方法に関する他のアイデアは大歓迎です。
編集: fread 関数を使用すると、ストリーム (この場合は stdin) から読み取って変数/配列に保存するバイト数を指定できるため、さらに優れた方法が見つかりました。
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
パラメーター
ptr - 最小サイズが (size*count) バイトのメモリ ブロックへのポインター。
size - 読み取る各要素のバイト単位のサイズ。
count - 要素の数。それぞれのサイズは size バイトです。
stream - 入力ストリームを指定する FILE オブジェクトへのポインター。