一只魈咸鱼 发表于 2021-8-21 12:42:54

关于文件字符存储的形式

看了好多文章,就算文件采取的编码格式不一样,但都是由0和1组成的,那我open(file,'rb')后print(read())打印出的为什么是16进制而不是一大堆0和1呢

大马强 发表于 2021-8-21 12:47:17

这是python帮你处理过的

逃兵 发表于 2021-8-21 12:47:56

01是机器语言

编译型语言是C→汇编语言→机器语言→exe文件→CPU

解释型语言是python→字节码→解释器→CPU

kogawananari 发表于 2021-8-21 12:49:03

因为print()是调用str魔术方法

python的 bytes类型的str魔术方法是返回16进制字符串

一只魈咸鱼 发表于 2021-8-21 15:37:13

kogawananari 发表于 2021-8-21 12:49
因为print()是调用str魔术方法

python的 bytes类型的str魔术方法是返回16进制字符串

那假如我想把一个文件里面的0改为1,1改为0,我该如何操作呢

kogawananari 发表于 2021-8-22 13:31:04

一只魈咸鱼 发表于 2021-8-21 15:37
那假如我想把一个文件里面的0改为1,1改为0,我该如何操作呢

一个字节一个字节的转就行了

一只魈咸鱼 发表于 2021-8-22 16:31:19

kogawananari 发表于 2021-8-22 13:31
一个字节一个字节的转就行了

就是说f.read()返回的字符串里面只有0和1吗?那我直接list()转化,然后f在or循环里0,1互换可以吗

kogawananari 发表于 2021-8-22 17:11:03

一只魈咸鱼 发表于 2021-8-22 16:31
就是说f.read()返回的字符串里面只有0和1吗?那我直接list()转化,然后f在or循环里0,1互换可以吗

为什么要用list直接for就行了

一只魈咸鱼 发表于 2021-8-22 21:59:18

kogawananari 发表于 2021-8-22 17:11
为什么要用list直接for就行了

因为字符串的内容不是不允许通过索引修改嘛。。如果用replace的话就只能全为1或全为0了,或者还有其它操作吗

kogawananari 发表于 2021-8-23 00:41:45

一只魈咸鱼 发表于 2021-8-22 21:59
因为字符串的内容不是不允许通过索引修改嘛。。如果用replace的话就只能全为1或全为0了,或者还有其它操 ...

bytes类型不是字符串。然后取反是运算符~
页: [1]
查看完整版本: 关于文件字符存储的形式