Python 中 Elias Delta 编码详情

目录
  • 1、分步实施
    • 第1步:
    • 第2步:
    • 第3步:
    • 第4步:

语法:

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

1、分步实施

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

第1步:

  • 从数学库导入 logfloor 函数以执行对数运算。
  • 从用户获取输入 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 的变量中。
  1. 前缀零仅指定应使用 format() 的哪个参数来填充 {}。
  2. 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))

第4步:

  • 得到不带 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

到此这篇关于Python 中 Elias Delta 编码详情的文章就介绍到这了,更多相关Python 中 Elias Delta 编码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python入门课程第三讲之编码规范知多少

    目录 前言 注释 缩进规则 编码规范 标识符命令规范 标识符遵循的规则 关键字 总结 这是Pyhon系列文章的第三篇,本文主要介绍Python程序的编码规范. 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 前言 上一篇文章我们介绍如何运行Python程序,如何安装PyCharm开发工具以及如何用PyCharm来运行Python程序,这些都只是开发前的准备工作而已,也就是说仅仅是弄好了脚手架.接下来就是开始编码了.不过在编码之前我们还是先需要了解一下P

  • 详解python中文编码问题

    目录 1.        在Python中使用中文 1.1     Windows控制台 1.2     Windows IDLE(在Shell上运行) 1.3     在IDLE上运行代码 1.4     Windows Eclipse 1.5     从文件读取中文 1.6     在数据库中使用中文 1.7     在XML中使用中文 1.        在Python中使用中文 在Python中有两种默认的字符串:str和unicode.在Python中一定要注意区分"Unicode字符

  • Python之进行URL编码案例讲解

    为什么要对URL进行encode 在写网络爬虫时,发现提交表单中的中文字符都变成了TextBox1=%B8%C5%C2%CA%C2%DB这种样子,观察这是中文对应的GB2312编码,实际上是进行了GB2312编码和urlencode. 那么为什么要对URL进行encode? 因为在标准的url规范中中文和很多的字符是不允许出现在url中的.为了字符编码(gbk.utf-8)和特殊字符不出现在url中,url转义是为了符合url的规范. 具体代码 urlencode编码:urllib中的quote

  • python 编码中为什么要写类型注解?

    1.背景 我们先谈谈为什么在Python编码过程中强烈推荐使用类型注解 ? Python对于初学者来说是非常好上手,原因是在于对计算机底层原理的高度封装和动态语言的特性使得Python用起来非常的舒适.但这种"舒适"是有代价的,我们可能听说过一句形容动态语言的话,动态一时爽,一直动态一直爽.为什么会这么说?动态的确会赋予我们在编码时更多的灵活性与能力,但是动态带来的是更多的不确定性及混乱,导致了后来的维护者甚至作者自己都会产生很大的维护压力(可以想象一个经过几年迭代的复杂系统,如果大部

  • python基础之编码规范总结

    一.PEP 8规范 官方文档:https://legacy.python.org/dev/peps/pep-0008/ 中文翻译: https://www.jb51.net/article/103944.htm 二.缩进 每一级缩进4个空格. 续行应该与包裹元素对齐,要么使用圆括号,方括号,花括号内的隐式行连接来垂直对齐,要么使用挂行缩进对齐.当使用挂行缩进对齐时,应该考虑到第一行不应该有参数,以及使用缩进以区分自己是续行. 对齐缩进(左右括号对齐) def long_function_name

  • Python 中 Elias Delta 编码详情

    目录 1.分步实施 第1步: 第2步: 第3步: 第4步: 语法: Elias Delta Encoding(X)= Elias Gamma encoding (1+floor(log2(X)) + Binary representation of X without MSB. 1.分步实施 首先,在为 Elias Delta 编码编写代码之前,我们将实现 Elias delta 编码. 第1步: 从数学库导入 log.floor 函数以执行对数运算. 从用户获取输入 k 以在 Elias Ga

  • Python字符集和字符编码详情

    目录 前言 字符集和字符编码 小结 前言 这一次我们分析一下Python的字符串,首先字符串是一个变长对象,因为不同长度的字符串所占的内存是不一样的:但同时字符串又是一个不可变对象,因为一旦创建就不可以再修改了. 而Python中的字符串是通过unicode来表示的,在底层对应的结构体是PyUnicodeObject.不过话说回来,为什么需要unicode呢? 首先计算机存储的基本单位是字节,由8个比特位组成,由于英文字母算上大小写只有52个,再加上若干字符,数量不会超过256个,因此一个字节完

  • python中判断文件编码的chardet(实例讲解)

    1.实测,这个版本在32位window7和python3.2环境下正常使用. 2.使用方法:把解压后所得的chardet和docs两个文件夹拷贝到python3.2目录下的Lib\site-packages目录下就可以正常使用了. 3.判断文件编码的参考代码如下: file = open(fileName, "rb")#要有"rb",如果没有这个的话,默认使用gbk读文件. buf = file.read() result = chardet.detect(buf)

  • Python中字符串与编码示例代码

    在最新的Python 3版本中,字符串是以Unicode编码的,即Python的字符串支持多语言 编码和解码 字符串在内存中以Unicode表示,在操作字符串时,经常需要str和bytes互相转换   如果在网络上传输或保存到磁盘上,则从内存读到的数据就是str,要把str变为以字节为单位的bytes,称为编码   如果从网络或磁盘上读取字节流,则从网络或磁盘上读到的数据就是bytes,要把bytes变为str,称为解码   为避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行

  • 对python中url参数编码与解码的实例详解

    一.简介 在python中url,对于中文等非ascii码字符,需要进行参数的编码与解码. 二.关键代码 1.url编码 对字符串编码用urllib.parse包下的quote(string, safe='/', encoding=None, errors=None)方法. 对json格式的参数名和值编码,用urllib.parse包下的 urlencode(query, doseq=False, safe='', encoding=None, errors=None, quote_via=qu

  • python中字符串的编码与解码详析

    1. 常用的编码 ASCII:只能表示一些字母,数字和特殊的字符,占一个字节 GBK:国家简体中文字符集和繁体字符集,兼容ASCII,占两个字节 Unicode:能够表示全世界上所有的字符,Unicode有人说占4个字节也有人说占2个字节,但中文占2个字节 UTF-8:Unicode的压缩版,占1~3个字节,其中中文占三个字节 2.补充:计算机表示的单位: bit: 位,计算机最小的表示单位 bytes:字节,最小的存储单位,1bytes=8bit,1bytes简写成1B 1KB = 1024B

  • Python中的for循环详情

    目录 1.可迭代对象 1.1什么是可迭代对象 1.2怎么判断 2.字符串的for循环 3.列表的for循环 4.元组的for循环 5.字典的for循环 5.1keys() 5.2 values() 5.3 items() 6.range函数的for循环 6.1基础案例 6.2找出100以内能够被5整除的数 6.3高斯求和 7.多个for语句 8.列表推导式 9.for-else 10.实现三角阵列 11.99乘法表 for语句实际上解决的是循环问题.在很多的高级语言中都有for循环(for lo

  • 在 Python 中进行 One-Hot 编码

    目录 1.介绍​ 2.什么是One-Hot编码? ​3.实现-Pandas​ ​4.实现-Scikit-Learn​ 5.​One-hot编码在机器学习领域的应用​ 1.介绍​ 在计算机科学中,数据可以用很多不同的方式表示,自然而然地,每一种方式在某些领域都有其优点和缺点.      由于计算机无法处理分类数据,因为这些类别对它们没有意义,如果我们希望计算机能够处理这些信息,就必须准备好这些信息.      此操作称为预处理. 预处理的很大一部分是编码 - 以计算机可以理解的方式表示每条数据(该

  •  Python 中 logging 模块使用详情

    目录 1.为什么要用logging模块 2.logging模块介绍 3.基础设置 1.为什么要用logging模块 在实际应用中,日志文件十分重要,通过日志文件,我们知道程序运行的细节:同时,当程序出问题时,我们也可以通过日志快速定位问题所在.在我们写程序时,也可以借助 logging 模块的输出信息来调试代码. 但是很多人还是在程序中使用print()函数来输出一些信息,比如: print 'Start reading database' records = model.read_recrod

  • Python中使用不同编码读写txt文件详解

    复制代码 代码如下: import os import codecs filenames=os.listdir(os.getcwd()) out=file("name.txt","w") for filename in filenames:  out.write(filename.decode("gb2312").encode("utf-8")) out.close() 将执行文件的当前目录及文件名写入到name.txt文件中

随机推荐