【发布时间】:2016-11-18 12:43:13
【问题描述】:
我有一个函数应该接收十六进制 EBCDIC 格式的数据并将其转换为 ASCII。
例如,转换数据,F1F1F0F0 应该给我一个 1100 的 ASCII 或 31313030 的十六进制 ASCII。
我发现是这样的:
def __decode_ASC_EBCDIC_DT(self, data):
if (data[0] == '3'):
#HEX ASCII
dt_ = ''.join(chr(int(data[i:i + 2], 16)) for i in range(0, len(data), 2))
return dt_
elif (data[0] == 'F'):
#HEX EBCDIC
try:
tmp = bytearray(ord(c) for c in data)
dt_ = ''.join(tmp.decode('cp500'))
except:
print('can\'t convert:' + data)
return dt_
但似乎 CP500 正在转换我在“ãããã”中的数据,在这种情况下这是不正确的。 (tmp 是正确的 bytearray(b'F1F1F0F0'))
有什么想法,或者我应该为 EBCDIC 制作自己的字典吗?
【问题讨论】:
标签: python python-3.x zos ebcdic