c - Arinc429 32 位字

标签 c hex

所以我在工作中开始了一个新项目,引入了很多新概念。

我正在使用 arinc429 USB 盒和 c,需要读取来自缓冲区的信息,这很好,这就是如何处理我之后获得的数据,但我遇到了一些麻烦。

对于缓冲区中的每个数据项,我都会得到 arinc_low 和 arinc_high 无符号长整型,它们都表示十六进制值的结尾和开头。如何获取这两个十六进制值,将它们放在一起并构造 32 位字,以便我可以检索我需要的内容,例如,位 1-8 用于标签等。

到目前为止,我有以下内容:

snprintf(low, 16, "%lx", buffer[i].arinc_low);
snprintf(high, 16, "%lx", buffer[i].arinc_high);

通过它我可以迭代生成的字符:

for(i=0;i<sizeof(low);i++)
{
    printf("%d", low[i]);
}

等等。

例如,我得到的结果是:

102 55 102 -24 ......

这些位是构成我所追求的 32 位字的位吗?从查看文档来看,这些位似乎是要返回的合理数字。就像我说的,这个项目确实给我带来了很多新概念,这些新概念我过去曾短暂浏览过,但从未真正付诸实践。

谢谢。

最佳答案

您需要了解一下按位运算符。特别是右移和左移运算符(注意字节顺序),例如,将变量设置为arinc_high,然后相应地移动它。然后,您将使用例如按位或来设置剩余部分。

关于c - Arinc429 32 位字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122523/

相关文章:

c - While 循环未退出,错误为 `while(x!='\n')`

c - 这是一个 C 程序,用于计算从 0 到 n 的 k 的总和 : nCk . 我遇到了段错误

java - 在十六进制和 ascii 之间转换时丢失字符

python-3.x - python 3 : string to hex, 十六进制格式

PHP:简单,验证字符串是否为十六进制?

c - 如何使用shell脚本比较两个文件,一个具有不同的字段,另一个是c文件?

c - long int 和 int 在读取数据时是否相同?

ios - 检查 ABMultiValueRef 是否没有值

python - EasySNMP:不同的输出将OCTETSTR转换为Hex

c# - 在 C#/VB.NET 中解码 T-SQL CAST