将 4 个八位字节的有符号值和 1 个字节的无符号值组合在一起以执行特定功能

标签 c

我需要为 4 个八位字节分配一个函数,为 1 个字节分配另一个函数,最后我需要将它们组合在一起。我分别研究了有符号值和无符号值,但不知道如何将它们组合起来以用于特定的应用程序。我该怎么做?

enter image description here

最佳答案

您的原始 ASCII 艺术图像:

| MSB 5  |     4  |    3   |    2   |    1   | LSB 0  |
|     ACTIVE ELECTRICAL ENERGY      | TARIFF |VALIDITY|
|vvvvvvvv|vvvvvvvv|vvvvvvvv|vvvvvvvv|uuuuuuuu|rrrrrrbb|

Supposing you have all those bits in allbits, do

unsigned v = allbits >> 16;
unsigned u = (allbits >> 8) & 0xff;
unsigned r = (allbits >> 2) & 0x3f
unsigned b = allbits & 0x03;

或者反过来,从各个部分构建所有位

allbits = (v << 16) | (u << 8) | (r << 2) | (b);

关于将 4 个八位字节的有符号值和 1 个字节的无符号值组合在一起以执行特定功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53724000/

相关文章:

c - 在 C 中跟踪递归

使用 C 将二叉树转换为二叉搜索树

c - 分析汇编指令这个 'efficiency rating'是什么意思呢?

c - 修复 ruby​​ gem 的外部依赖

c - K&R 练习 1-9。 Putchar 和 getchar

c - 删除数组中特定字符之前的所有字符

c - 代码的系统相关限制

c# - C# 中的委托(delegate)比 C/C++ 中的函数指针有何优势?

c - 是否可以在 C 中使用 Lisp 语法和前缀表示法?

c - 指向以指向 typedef 类型的指针为模型的整数类型的指针