【问题标题】:Pack a number into an odd number of bits将一个数字打包成奇数位
【发布时间】:2016-04-11 06:10:04
【问题描述】:

2 19 位长的标头字段。我正在尝试将数字 921 十进制打包成十六进制。最低有效字节在前。

打包成 24 位很容易:

921.0 = 0x0399

二进制:

9 9 0 3 0 0

1001 1001 0000 0011 0000 0000

然后完成。结果:0x990300

如何将其打包成 19 位?

【问题讨论】:

    标签: binary hex mpeg mpeg2-ts bit-packing


    【解决方案1】:

    让我们假装你有一堆书。准确地说是19本书。每本书厚一英寸,你想把它们放在架子上。所以你去宜家,要一个 19 英寸的自己。宜家的人说:“我们没有任何 19 英寸的架子。我们只有这个 8 英寸的架子。它被称为 bÿte”。 “好吧,你说得很好。我会吃 2.375 次”。他说:“对不起,先生,我不能卖给你零碎的 bÿtes。但是如果你得到 3 个 bÿtes,它会装下你所有的书,而你还有 5 英寸的余地可以用来买别的东西。

    【讨论】:

    • :-) 好的,喜欢类比,所以如果书是百科全书,我应该如何将我拥有的 9 本书系列排列成 19 英寸?我不需要全部 19 个。我正在尝试使用 LSBF 将十六进制 0x399 表示为 19 位。
    • 3 个字节中的 5 位未使用,应用程序解析数据时将被忽略。什么 5 位无关紧要,只要生产者和消费者同意。
    • @szatmary 在哪里插入填充是否有最佳实践?像UDP这样的协议在最后填充并提供一个长度来确定实际数据。另一方面,在开头插入填充可能与数字无关(考虑到符号性),因此您甚至不必关心填充。
    猜你喜欢
    • 2013-01-07
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 2022-11-25
    相关资源
    最近更新 更多