极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11979|回复: 4

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

[复制链接]
发表于 2015-8-20 15:08:11 | 显示全部楼层 |阅读模式
先将串口输入的24位2进制数赋值于 变量x,再将24位数分成3个8位2进制数存在abc中 求解啊
回复

使用道具 举报

 楼主| 发表于 2015-8-20 15:13:51 | 显示全部楼层
你这个是什么意思啊 =。=
回复 支持 反对

使用道具 举报

发表于 2015-8-20 15:53:59 | 显示全部楼层
分三组,各有一个标志位、符号位
回复 支持 反对

使用道具 举报

发表于 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;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 19:57 , Processed in 0.038973 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表