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


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

関連記事

エンジニアの苦しい毎日を救う魔法の白い粉

汎用クローラのリポジトリを更新しました

windows10でvid2vidを動かそう

Optunaでハイパーパラメータ探索ができるようにTensor2Tensorを改造した!

えるしってるか WSLではwindowsのバイナリを実行できる

Ubuntu 16(WSL)でのaptエラー対処

コメント

コメントを返信する

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