Python:在连接两个十六进制字符串时保持尾随零

时间:2019-01-22 09:36:00

标签: python-3.x

我有一个csv文件,其中包含两列数据。数据为十进制格式。

我正在尝试将数据转换为十六进制格式,然后将其连接起来。

当column2中的数据不为零时,我能够进行转换和连接。

例如: Column1 = 52281 Column2 = 49152 ,那么我就能获得 CC39C000 。 (hex(52281)= CC39和hex(49152)= C000)。

但是,如果Column2中的数据为零:-

Column1 = 52281 Column2 = 0 ,那么我得到的是 CC390 而不是 CC390000

以下是我的代码段:-

file=open( inputFile, 'r')
reader = csv.reader(file)
for line in reader:
        col1,col2=int(line[0]),int(line[1])
        newstr = '{:x}'.format(col1)+'{:x}'.format(col2)

当column2中的数据为0时,我期望得到0000。

我如何修改我的代码以实现这一目标?

1 个答案:

答案 0 :(得分:1)

如果有

a=52281
b=0

您可以转换yo十六进制并计算最长的字符串以填充零

hex_a = hex(a)[2:] # [2:] removes the trailing 0x you might want to use [3:] if you have negative numbers
hex_b = hex(b)[2:]
longest=max(len(hex_a), len(hex_b))

然后您可以使用zfill方法填充0:

print(hex_a.zfill(longest) + hex_b.zfill(longest))

如果只需要4个字符,则可以执行zfill(4)

如果我尝试修改您的代码,由于我无权访问该文件,因此很难测试,

 file=open( inputFile, 'r')
 reader = csv.reader(file)
 for line in reader:
    col1,col2=int(line[0]),int(line[1])
    hex_col1 = hex(col1)[2:] if col1>=0 else hex(col1)[3:]
    hex_col2 = hex(col2)[2:] if col2>=0 else hex(col2)[3:]
    longest = max(len(hex_col1), len(hex_col2))
    newstr = hex_col1.zfill(longest) + hex_col2.zfill(longest)