c - 如何获取 uint32_t 的 uint8_t 数据
问题描述
我正在使用一个微控制器,我试图连接的传感器发送 uint8_t 数据。问题是我可以使用 uint32_t 函数读取引脚。
所以我想我可以用 uint32_t 读取 pin,但我必须“提取”它。但是我开始胡说八道了...
uint32_t number = 429496729;
uint8_t x1 = (number >> (8*0)) & 0xff;
uint8_t x2 = (number >> (8*1)) & 0xff;
uint8_t x3 = (number >> (8*2)) & 0xff;
uint8_t x4 = (number >> (8*3)) & 0xff;
例如,打印 x3 给了我“™”。与 x1 相同。这里发生了什么?
解决方案
从您的代码中,“™”正是您所期望的。
// 0x19999999 - NOTE: you'd need an extra '5' on the end to make it MAX_UNIT. eg. 0xFFFFFFFF
uint32_t number = 429496729;
uint8_t x1 = (number >> (8*0)) & 0xff; // 0x99
uint8_t x2 = (number >> (8*1)) & 0xff; // 0x99
uint8_t x3 = (number >> (8*2)) & 0xff; // 0x99
uint8_t x4 = (number >> (8*3)) & 0xff; // 0x19
如果您在扩展 ascii 中查找“™”符号,它映射到 153,例如。0x99h。
推荐阅读
- java - 无法通过 Jenkins 启动 safariDriver
- regex - 使用 Windows Powershell,我怎样才能找到包含相似标题的所有文件,一个以相同单词开头的文件?
- python - 如何使用 python 字典构建 2D json 对象?
- ios14 - 从 Xcode 启动 App Clip 时未调用 SceneDelegate 的“继续”
- laravel - 在单元测试 setUp 方法中调用路径辅助函数会引发错误
- kubernetes - Kubernetes Nginx 入口控制器就绪探测失败
- isabelle - 语言环境:使用单元实例化时 Codegen 失败(code_pred:“战术失败”)
- sql - 没有 GROUP by 的数据集 SQL Oracle 中的天数
- html - 如何在使用背景和边框的元素之间添加间距而不在元素之间创建空间?
- python - 你如何将一个变量从一个 for 循环中取消本地化,并使其成为整个函数的本地变量?