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


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

関連記事

香港ー深圳で一番便利になった広深港高速鉄道の乗り方・買い方

PC・タブレットでgoogle翻訳を活用する英語論文読み環境

Zortrax m200の反り対策

振動吸収カメラマウントの三脚穴付きのやつ作った

iRangeXのドローン用プロポを修理する

blenderで操作不能になったら見るまとめ

コメント

コメントを返信する

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