📜  Python中的一元编码

📅  最后修改于: 2022-05-13 01:55:20.534000             🧑  作者: Mango

Python中的一元编码

一元码有时也称为温度计码,是一种熵编码。它是一种在哥伦布码中应用的无损数据压缩技术。

自然数n的一元表示是 n 个 1 后跟一个 0。例如,6 的一元代码将是 6 个 1,后跟一个 0,即 1111110

例子:

Input: 5
Output: 111110
result has 5 ones followed by a 0 

Input: 1
Output: 10
result has 1 one followed by a 0

方法:

  • 对于编码:取一个空列表,然后在最后一个附加 N 次 1 和 0,然后将其转换为字符串并打印结果。
  • 解码:取一个给定的字符串并计算 1 的个数,然后打印结果。

示例 1:自然数的一元表示。

Python3
# Unary code encoding
N = 8
A = []
  
for i in range(N):
    A.append(1)
      
A.append(0)
  
B = [str(k) for k in A]
  
C = "".join(B)
  
print("Unary code for", N,
      'is', C)


Python3
# Unary code decoding
  
code =  "111111110"
count = 0
  
for i in code:
    if i == "1":
        count += 1
          
print("decoded number is :", count)


输出:

Unary code for 8 is 111111110

示例 2:十进制 一元码的表示。

Python3

# Unary code decoding
  
code =  "111111110"
count = 0
  
for i in code:
    if i == "1":
        count += 1
          
print("decoded number is :", count)

输出:

decoded number is : 8