这更像是一个理论问题。让我先解释一下情况:
我们有一个系统,它打电话给另一个系统并发送dtmf音(如果你不熟悉dtmf音,我们假设它发送的数字像0,1,2 ......)。根据收到的dtmf音调,接收端组成整个号码,然后执行一些动作。
但是,对于像423121212121这样的较长的数字,它有13 dtmf音调,需要很长时间才能传输。
我想知道是否有人熟悉任何类型的数学公式或算法,可以将这13个数字压缩成更小的尺寸,发送它然后在另一端提取它?
答案 0 :(得分:3)
在完整的DTMF方案中,有四个“位”数据,意味着16个组合。如果所有16个组合都可用,最明显的方法是将您的数字编码为十六进制数字并传输十六进制数字。这将使你的13位数降低到10或11 - 不是一个大的减少,但也许你可以做的最好。
我能想到的唯一另一件事就是利用数字中的模式,用一个数字代替“流行的”前缀代码(要求不太常见的前缀有一个额外的标记数字来识别它们) 。这是一个穷人的霍夫曼编码版本。或者可以采用完整的霍夫曼编码或类似的方案。