我目前正在开发一个python学校项目,我必须从tftp服务器接收数据包并将它们写入jpg文件
我设法接收所有数据包并将所有数据包存储到一个字符串中 字符串看起来像这样:
“ÿØÿàÇeæuNþ¤æú; o!#æeæÞ”7“Lê.......”依此类推,字符串的大小为19622。
现在我想知道的是,是否有办法将此字符串写入光盘上的图像文件?
是否有更好的方法将数据包接收到更好的数据类型,例如dataoutputSstream?
谢谢,
答案 0 :(得分:0)
这些字符串实际上只是ascii中这些字节值的直观表示,所以你应该将它们存储在bytes like个对象中(这应该是你接收TCP / UDP的默认类型)数据)。如果您确实通过网络接收JPG文件,那么您只需要将这些字节写入二进制文件,ala open("file_name.jpg", "wb")
并确保您创建的新文件具有.jpg扩展名。如果数据相同,则无论您将其发送到何种介质,它都将被解释为与任何旧的jpg文件相同。将它们存储在字节数组等中非常重要,因为您要确保收到的数据实际上是作为物理二进制值写出来的,而不是该字符串的文本版本。
只有一种类型的文件,那就是二进制文件。甚至文本文件都是二进制文件。但我们将“人类可读”和“二进制”的概念分为二进制格式和文本格式。 python文件,任何.txt格式,这些都是使用此约定的文本文件。 jpg,png,编译程序,或基本上任何代码,其表示不能通过ASCii,UDP-8,16,32,64等解析,或任何其他文本表示是二进制文件。
关于文件的事情是,因为它们实际上都是二进制的,它们是根据你告诉另一个程序文件是什么来解释的(因此文件扩展名),即使这样,如果程序允许,你也可以忽略扩展和只需告诉编辑“将其解释为X文件”。