ビット演算とかほぼ初めてやったのでメモ
#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ずつしかデータを送れない時とかに使う
コメント