十六进制字符串到压缩EBCDIC字符串

2024-06-12 05:21:33 发布

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

我需要转换'767f440128e1a00a'十六进制数据压缩EBCDIC字符串。我希望所有的result结果都变成一个字符串,但是python给出了Unicode错误UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe1 in position 0: unexpected end of data

s='767f440128e1a00a'
output = []
DDF = [1]
distance = 0
for y in range (1,len(s[2:])):
    for x in DDF:
        if s[2:][distance:x*2+distance]!='':
            output.append(s[2:][distance:x*2+distance]) 
        else:
            continue
        distance += x*2
print(output)
final=[]
result=''
bytearrya=[]
for x in output:
    result=(str(bytearray.fromhex(x).decode()))
    x = codecs.decode(x, "hex")
    final.append(x)

Tags: 字符串inforoutput错误unicoderesultutf
1条回答
网友
1楼 · 发布于 2024-06-12 05:21:33

下面是基于Python byte representation of a hex string that is EBCDIC的代码,其中提到“根据this,您需要使用‘cp500’进行解码”

Codec / Aliases                            / Languages
cp500 / EBCDIC-CP-BE, EBCDIC-CP-CH, IBM500 / Western Europe
my_string_in_hex = '767f440128e1a00a'
my_bytes = bytearray.fromhex(my_string_in_hex)
print(my_bytes)

my_string = my_bytes.decode('cp500')
print(my_string)

输出:

enter image description here

相关问题 更多 >