Python 中的 Elias Delta 编码

简介: Python 中的 Elias Delta 编码

在本文中,我们将使用 python 实现 Elias Delta 编码。

语法:

Elias Delta Encoding(X)= Elias Gamma encoding (1+floor(log2(X)) + Binary representation of X without MSB.

分步实施

首先,在为 Elias Delta 编码编写代码之前,我们将实现 Elias delta 编码。

第1步:

  • 从数学库导入 log、floor 函数以执行对数运算。
  • 从用户获取输入 k 以在 Elias Gamma 中进行编码。
  • 使用数学模块中的 floor 和 log 函数,找到 1+floor(log2(X) 并将其存储在变量 N 中。
  • 使用 (N-1)*'0'+'1' 找到 N 的一元编码,它为我们提供了一个二进制字符串,其中最低有效位为 '1',其余最高有效位为 N-1 个'0'。

示例: 某些值的 Elias Gamma 编码

def EliasGammaEncode(k):
  if (k == 0):
    return '0'
  N = 1 + floor(log(k, 2))
  Unary = (N-1)*'0'+'1'
  return Unary + Binary_Representation_Without_MSB(k)

第2步:

  • 创建一个函数,该函数接受输入 X 并给出结果作为 X 的二进制表示,没有 MSB。
  • 使用“{0:b}”.format(k) 找到 k 的二进制等效项并将其存储在名为 binary 的变量中。
  • 前缀零仅指定应使用 format() 的哪个参数来填充 {}。
  • b 指定参数应转换为二进制形式。
  • 返回字符串 binary[1:],它是 X 的二进制表示,没有 MSB。

示例: 不带 MSB 的二进制表示

def Binary_Representation_Without_MSB(x):
  binary = "{0:b}".format(int(x))
  binary_without_MSB = binary[1:]
  return binary_without_MSB

现在我们要为 Elias Delta Encoding 编写代码

第 3 步:

  • 从用户获取输入 k 以在 Elias Delta 中进行编码。
  • 使用数学模块中的 floor 和 log 函数,找到 1+floor(log2(k)。
  • 将 1+floor(log2(k) 的结果传递给 Elias Gamma 编码函数。

示例:某些值的 Elias Delta 编码

def EliasDeltaEncode(x):
  Gamma = EliasGammaEncode(1 + floor(log(k, 2)))
  binary_without_MSB = Binary_Representation_Without_MSB(k)
  return Gamma+binary_without_MSB
k = int(input('Enter a number to encode in Elias Delta: '))
print(EliasDeltaEncode(k))

第四步:

  • 得到不带 MSB 的 k 的 Elias Gamma 编码和二进制表示的结果
  • 连接两个结果并在控制台上打印它们

为某些整数值生成 Elias Delta 编码的完整代码

from math import log
from math import floor
def Binary_Representation_Without_MSB(x):
  binary = "{0:b}".format(int(x))
  binary_without_MSB = binary[1:]
  return binary_without_MSB
def EliasGammaEncode(k):
  if (k == 0):
    return '0'
  N = 1 + floor(log(k, 2))
  Unary = (N-1)*'0'+'1'
  return Unary + Binary_Representation_Without_MSB(k)
def EliasDeltaEncode(x):
  Gamma = EliasGammaEncode(1 + floor(log(k, 2)))
  binary_without_MSB = Binary_Representation_Without_MSB(k)
  return Gamma+binary_without_MSB
k = 14
print(EliasDeltaEncode(k))

输出:

00100110


目录
相关文章
|
7月前
|
存储 Python
Python文件编码概念详解
Python文件编码概念详解
64 1
|
3月前
|
Python
python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)
这篇文章介绍了如何使用Python的第三方库chardet来检测字符串的编码类型,包括ASCII、GBK、UTF-8和日文编码的检测示例。
149 6
|
3月前
|
Python
Python 中如何指定 open 编码为ANSI
Python 中如何指定 open 编码为ANSI
63 1
|
4月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
282 1
|
4月前
|
开发者 Python
Python编码风格
Python编码风格
29 1
|
5月前
|
Python
11个提升Python列表编码效率的高级技巧
Python中关于列表的一些很酷的技巧
56 1
|
4月前
|
JSON 数据库 开发者
FastAPI入门指南:Python开发者必看——从零基础到精通,掌握FastAPI的全栈式Web开发流程,解锁高效编码的秘密!
【8月更文挑战第31天】在当今的Web开发领域,FastAPI迅速成为开发者的热门选择。本指南带领Python开发者快速入门FastAPI,涵盖环境搭建、基础代码、路径参数、请求体处理、数据库操作及异常处理等内容,帮助你轻松掌握这一高效Web框架。通过实践操作,你将学会构建高性能的Web应用,并为后续复杂项目打下坚实基础。
138 0
|
5月前
|
存储 缓存 Python
python中小数据池和编码
python中小数据池和编码
59 3
|
5月前
|
缓存 Java Unix
python中内存管理等10个编码习惯
【7月更文挑战第3天】本文涵盖了Python编程中的变量管理、模块导入、命令行参数、内存管理和面向对象设计的10个关键概念。
50 0
python中内存管理等10个编码习惯
|
6月前
|
自然语言处理 Python
Python编码问题
Python编码问题是指在处理文本时,由于编码不一致导致程序不能正确处理文本的问题。在Python中,编码问题主要有两种情况:文件编码问题和字符串编码问题。
68 7