ビット演算とかほぼ初めてやったのでメモ


#include <stdio.h>

int main(void) {

	char* str = "1\n";

	int char_pos = 0; // 入力char配列の何番目を見ているか
    int bufint = 0x00000000;  // 右から8bitずつ押し込まれる配列

    while (char_pos < 4) {
        if ((0xff & str[char_pos]) == 0x0000000a) break; // 改行なら終了

        bufint = bufint << 8; // bufintを左に8bitシフト(右2つが00になる)
        // printf(": 0x%08x\n", (0xff & str[char_pos]));

        bufint = bufint | (0xff & str[char_pos]); // 32bitにしてOR演算
        ++char_pos;
    }

    printf("input: %s\n", str);
    printf("write: 0x%08x\n", bufint);

	return 0;
}

strが”1\n”なら結果は 0x00000031

“12121\n”なら”1212″までが格納されて0x31323132になる

4byteずつしかデータを送れない時とかに使う

関連記事

5月分のBanggoodクーポン Mi Pad 4 Plusもあるよ

Kindle Cloud Readerで洋書を読む時にgoogle翻訳を使う

シグマのフルサイズ超広角Artレンズを買った

numpyで3次元座標インデックスの配列を作る方法

300ドル15W中華半導体レーザーカッター買った その5

deep learningフレームワーク・ライブラリをGPU環境のwindows10にインストールする方法と応用まとめ

コメント

コメントを返信する

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です