+ -
当前位置:首页 → 问答吧 → struct.unpack处理二进制数据得到的字符串后面补的^@怎么处理掉?

struct.unpack处理二进制数据得到的字符串后面补的^@怎么处理掉?

时间:2011-12-19

来源:互联网

Python code
import struct

#加入data对应十六进制数是52 4E 00 00 00,对应字符串是"RN"
mystr = struct.unpack('>5s', data)
print mystr


直接运行这个脚本输出结果是:
RN
但是如果把输出的结果重定向到一个文本里发现结果是:
RN^@^@^@(linux下)

请教牛人解答,如果去掉后面的^@^@^@???

作者: yuxi2046   发布时间: 2011-12-19

找到了两个方法:

[root@RHEL6A pycode]# ./py18.py |perl -pe 's/\000/ /g' > mylog2.txt
[root@RHEL6A pycode]# ./py18.py |tr '\0' '\040' > mylog.txt

分别参考这里:
http://www.unix.com/unix-dummies-questions-answers/70404-replace-null-space.html
http://www.unix.com/shell-programming-scripting/103619-cannot-replace-null-space.html

作者: askandstudy   发布时间: 2011-12-19