终止从解包收集的字符串

时间:2015-11-16 21:43:45

标签: python

我有以下代码从二进制文件中获取字符串。

value = struct.unpack ('<16s', f.read(16))[0]
print 'dispvdn =' + str(value)

这工作正常,我得到了预期的价值。但是,当我打印一个6个字符的值时,我看到整个字符串长度为16,就像这样。

dispvdn = 40010.◦◦◦◦◦◦◦◦◦

我想知道这是否缺少\ 0。什么是正确终止或修剪它的最佳方法?

2 个答案:

答案 0 :(得分:0)

这是我最终做的事情,它适用于我需要的东西。我创建了以下小方法。

add_argument('inFile', ...

这允许以下工作从较大的二进制读取中获取字符串。

def finalizeString(data):   
    len = data.index('\0')
    return data[0:len]

我知道我可以压缩和清理它但我想分享所以这标记为已关闭。

答案 1 :(得分:0)

你可以这样做(类似于你自己的回答):

value = struct.unpack ('<16s', f.read(16))[0]
truncated = value.split('\0')[0]   ## split and take the first substring
print 'dispvdn =' + truncated