利用python进行数据编解码

2024-05-31 23:42:20 发布

您现在位置:Python中文网/ 问答频道 /正文

这不是一个编程问题,而是一个理解什么是什么的问题?我不是计算机专业的学生,我想了解这三种格式之间的基本区别:

1)EBCDIC 2)无符号二进制数3)二进制编码十进制

如果这不是一个真正的问题,我道歉,但谷歌并没有很好地向我解释这个问题

假设我有一串数字,比如“12890”。他们的代表是什么

无符号数字和无符号二进制格式?在

有没有一个python2.6库可以用来简单地将任何一个数字字符串转换成这些格式?在

例如,对于字符串到ebcdic,我正在

def encodeEbcdic(text):
    return text.decode('latin1').encode('cp037')

print encodeEbcdic('AGNS')

但是,我明白了


Tags: 字符串text编码格式编程二进制符号代表
2条回答

萨尔斯帕茨,谢谢你的解释。我找到了将任何数字串转换成不同编码所需的必要方法。我不得不参考有效的Python第1章第3项:了解字节、str和unicode之间的区别

从那以后,我读到了更多关于数据类型之类的东西。在

总之,回答我的问题:

1)到EBCDIC的字符串:

def encode_ebcdic(text):
    return text.decode('latin1').encode('cp037')

这里的编码是美国的cp037。你可以用cp500国际。以下是他们的名单: https://en.wikipedia.org/wiki/List_of_EBCDIC_code_pages_with_Latin-1_character_set

2)十六进制字符串到无符号二进制数:

^{pr2}$

这很基本,只需将十六进制字符串转换为数字。在

3)十六进制字符串到二进制编码的十进制:

def str_to_bcd(text):
    return bytes(str).decode('hex')

是的,您需要将其转换为字节数组,以便进行BCD转换。答案是什么样的编码请阅读。在

EBCDIC是一种IBM字符编码。它是用来编码文本的。当然,数字可以出现在文本中,比如在“宾夕法尼亚大道1600号”,所以也有数字的代码。要将1600转换为EBCDIC,需要找到EBCDIC表。然后根据http://www.astrodigital.org/digital/ebcdic.html处的表查找1的代码、6的代码和0的代码(两次) 0到9的EBCIDIC代码分别是F0到F9。这看起来很熟悉,但我不能说我真的记得。在

无符号二进制数就是这样。它是以2为基数写的数字。(见下文。)

二进制编码十进制(BCD)是一种旧格式,用于在数字计算机上存储数字的十进制表示形式。每一个十进制数字都用它的二进制等价物表示。以64为例。因为64是2的六次方,所以在二进制中它被表示为1后跟6个0:1000000。在二进制编码的十进制中,我们将6写入二进制0110,将4写入二进制0100,这样BCD表示为01100100。每个数字需要四位,因为最大的十进制数9等于1001。BCD在COBOL中得到了广泛的应用。如果现在它在其他地方使用,我对这个应用程序并不熟悉。在

编辑:我应该解释一下EBCDIC中的F0、F1等都是十六进制代码,所以F是1111,数字与BCD中的相同。因此,EBCDIC for numbers结果与BCD相同,但是每个数字前都有一个额外的1111。在

相关问题 更多 >