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


#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ずつしかデータを送れない時とかに使う

関連記事

fitbitの睡眠スコアを90弱で安定させる良い睡眠を続ける簡単な方法

m1 ipad pro 12.9 2021のusb-cハブはコレがベスト

Time Machine不要!Macを11.2.3にダウングレードして原神をm1 macbook airでプレイする

MH-Z19CとM5StickCで二酸化炭素濃度モニタリング

【神軽量HMD】Avegant Glyph 改造: 瓶詰堂さんのaltglyphを作った

PC、iPad、Android、switchもドックいらず!あまりに万能なusb-cハブが最強だった

コメント

コメントを返信する

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