2014-02-07 34 views
0

我想用补码操作符来删除文本文件。混淆文件的加密

import sys 
def encrypt(): 
    try: 
     fs=open('SOURCE.txt','r')    #normal file 
     ft=open('TARGET.txt','w')    #encrypted file 
    except: 
     print "File opening error!" 
     sys.exit(1) 
    while True: 
     ch=fs.read(1) 
     if not ch: 
      break 
     ft.write((ord(ch))^65535) 
    fs.close() 
    ft.close() 
encrypt() 

TypeError: expected a character buffer object 

为什么,它给这个错误:下面

代码给出?任何解决方案?

回答

0

如果你看完整回溯,你会看到错误就在这里

ft.write((ord(ch))^65535) 

write预期的字符缓冲区对象(如字符串),但你逝去的int

但是,您不能只使用str(),因为它会将该字节转换为ASCII。要将其写为二进制数据,请使用bytearray()

ft.write(bytearray([ord(ch)^0xff])) 
+0

你说得对,我错了。 – Vader