我有一个10位SDI流,当我收到它时,它会被存储到uint8_t *buffer
当我读到它时我会得到与预期完全不同的值,除了第一个:
10Bit - > 00 0000 0001 | 00 0101 1010→Hex:A5 10
8位 - > 0000 | 0000 0100 | 0101 1010→Hex:A5 40
有没有我可以用来正确映射它的功能? (C ++风格)
如果它不存在,我该如何实现呢?
答案 0 :(得分:0)
基本上,您需要使用带有正确参数的fread()
将5个字节(即40位)精确读入临时缓冲区。您使用该数量是因为它对应于输入流上的整数个字节以及输出流上的整数个输出字节。
然后使用左右SHIFT(<<
和>>
)和按位掩码(&
)来提取5个输出字节并将它们放入uint8_t缓冲区。