【发布时间】:2016-08-01 20:38:58
【问题描述】:
我有一个 10 位 SDI 流,当我收到它时,它将被存储到 uint8_t *buffer 中,当我阅读它时,我得到的值与预期完全不同,除了第一个:
10Bit -> 00 0000 0001 | 00 0101 1010 → 十六进制:A5 10
8 位 -> 0000 | 0000 0100 | 0101 1010 → 十六进制:A5 40
有没有我可以用来正确映射它的函数? (C++风格)
如果不存在,如何实现?
【问题讨论】:
-
10位值是
001 05A,8位值是0 04 5A,A5 10和A5 80怎么得到? -
有没有可以用来正确映射的函数? (C++ 风格) 我不知道。你可能不得不自己写一个。这个问题类似:stackoverflow.com/questions/11680248/…
-
是的对不起,我从右到左读它,因为来自流的第一个值是正确的,当然 8Bit 值将是 4 而不是 8,我会更正它,但是问题并没有改变,即使相反,我也读取了错误的值,是否有转换它的函数?
-
您在问:我有这 3 种颜色,如何将它们映射到这 2 种其他颜色。那么你不能不丢失一些信息。如果您可以保证不会出现一种颜色(使用了高 2 位),那么您可以将它们剪掉。或者你可以将你从 10 位中得到的数字除以 / 4,你可以在损失一些精度的情况下映射它们。
-
您的意思是 a) 您想从每个元素中丢弃 2 位并将其存储为 8 位?或者你的意思是 b) 你想将 10 位存储在一个 16 位数组中,这样当你访问第一个数组元素时,你会从原始流中获得第一个 10 位值,而当你访问第二个数组元素时,你会得到原始流中的第二个 10 位值? a) 涉及精度/分辨率的损失,b) 涉及填充/位旋转。