丶上头拍 发表于 2015-8-20 15:08:11

怎么把一个24位的二进制数处理成三个8位的二进制数

先将串口输入的24位2进制数赋值于 变量x,再将24位数分成3个8位2进制数存在abc中 求解啊
:Q:Q:Q:Q:Q:Q:Q:Q:Q:Q

丶上头拍 发表于 2015-8-20 15:13:51

你这个是什么意思啊 =。=

suoma 发表于 2015-8-20 15:53:59

分三组,各有一个标志位、符号位

Super169 发表于 2015-8-20 15:56:04

本帖最后由 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;

通幽境 发表于 2015-8-20 23:40:06

如果理解没错的话,我比较喜欢用移位的方式

uint32_t data = 0x123456;
byte a = data & 0x0000FF;   //0x56
byte b = (data>>8) & 0x0000FF;
byte b = (data>>16) & 0x0000FF;
页: [1]
查看完整版本: 怎么把一个24位的二进制数处理成三个8位的二进制数