怎么把一个24位的二进制数处理成三个8位的二进制数
先将串口输入的24位2进制数赋值于 变量x,再将24位数分成3个8位2进制数存在abc中 求解啊:Q:Q:Q:Q:Q:Q:Q:Q:Q:Q 你这个是什么意思啊 =。= 分三组,各有一个标志位、符号位 本帖最后由 Super169 于 2015-8-20 15:58 编辑
你應該先說明 "串口输入的24位2进制数", 是指用串口輸入一個二進的 string, 還是一個二進制的數值.
如果是二進制的 string, 可以先設定一個 unsigned long x = 0;
再把每一個 character read 進來 :x = (x << 1) | (Serial.read() - '0');
如果是一個二進制的數值....電腦本身就是用二進制的, 直接用 x = Serial.parseInt();
之後轉成三個 8 位 數值, 假設由高至低 a b c,
byte *p = (byte *) &x;
c = *p++;
b = *p++;
a = *p; 如果理解没错的话,我比较喜欢用移位的方式
uint32_t data = 0x123456;
byte a = data & 0x0000FF; //0x56
byte b = (data>>8) & 0x0000FF;
byte b = (data>>16) & 0x0000FF;
页:
[1]