获得徽章 0
赞了这篇文章
赞了这篇文章
赞了这篇文章
怎么理解在不同的上下文中,一个同样的字节序列可能表示不同的意思?
上下文就跟对暗号一样,对上了正确的上下文才能正确理解包含的字节序列
编码与数据类型上下文
![[灵光一现]](//lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_25.51e6984.png)
在不同的编码环境中,同样的字节序列可以表示不同的意义。例如,在UTF - 8编码下,字节序列“0xE4 0xB8 0xAD”表示汉字“中”。但如果将这个字节序列放在一个自定义的二进制协议中,它可能表示完全不同的含义,比如可能是一个特定命令的标识符或者是一个数据块的标记。
程序逻辑上下文
在程序内部,根据程序的逻辑,同样的字节序列会有不同的解释。假设一个程序有两个功能模块,一个是处理文本内容,另一个是处理图像的元数据。如果有一个字节序列“0x01 0x02 0x03”,当这个字节序列在处理文本内容的模块中,可能被当作文本编码的一部分;而当它在处理图像元数据的模块中,可能表示图像的宽度、高度或者颜色深度等信息中的某一项。
文件格式上下文
不同的文件格式中,相同字节序列含义不同。以文件头字节序列为例,在JPEG图像文件中,文件开头的字节序列具有特定的模式,用来标识这是一个JPEG文件。而在PDF文件中,开头的字节序列则是用于标识PDF文件格式的,与JPEG文件完全不同。如果将JPEG文件头的字节序列放到PDF文件解析的上下文中,或者反之,都会导致错误的解读。
上下文就跟对暗号一样,对上了正确的上下文才能正确理解包含的字节序列
编码与数据类型上下文
![[灵光一现]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_25.51e6984.png)
在不同的编码环境中,同样的字节序列可以表示不同的意义。例如,在UTF - 8编码下,字节序列“0xE4 0xB8 0xAD”表示汉字“中”。但如果将这个字节序列放在一个自定义的二进制协议中,它可能表示完全不同的含义,比如可能是一个特定命令的标识符或者是一个数据块的标记。
程序逻辑上下文
在程序内部,根据程序的逻辑,同样的字节序列会有不同的解释。假设一个程序有两个功能模块,一个是处理文本内容,另一个是处理图像的元数据。如果有一个字节序列“0x01 0x02 0x03”,当这个字节序列在处理文本内容的模块中,可能被当作文本编码的一部分;而当它在处理图像元数据的模块中,可能表示图像的宽度、高度或者颜色深度等信息中的某一项。
文件格式上下文
不同的文件格式中,相同字节序列含义不同。以文件头字节序列为例,在JPEG图像文件中,文件开头的字节序列具有特定的模式,用来标识这是一个JPEG文件。而在PDF文件中,开头的字节序列则是用于标识PDF文件格式的,与JPEG文件完全不同。如果将JPEG文件头的字节序列放到PDF文件解析的上下文中,或者反之,都会导致错误的解读。
展开
评论
点赞
ASCII是UTF - 8 的小狗
![[灵光一现]](//lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_25.51e6984.png)
在ASCII编码中,字母‘A’对应的编码是65(十进制),换算成二进制是01000001。这个编码只占用1个字节,并且ASCII编码可以很好地处理英文字母、数字等常见的英文文本内容。例如,英文单词“Hello”,每个字母都可以通过ASCII编码来表示,然后计算机就可以存储、处理和传输这个单词。
UTF - 8示例
对于汉字“你”,在UTF - 8编码下,它可能占用3个字节(不同的汉字可能占用字节数不同)。而英文单词“Hello”在UTF - 8编码下,每个字母仍然像在ASCII编码中一样,只占用1个字节。所以UTF - 8既可以表示像“Hello”这样的英文内容,也可以表示像“你”这样的汉字内容,还可以表示其他多种语言的字符。
![[灵光一现]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_25.51e6984.png)
在ASCII编码中,字母‘A’对应的编码是65(十进制),换算成二进制是01000001。这个编码只占用1个字节,并且ASCII编码可以很好地处理英文字母、数字等常见的英文文本内容。例如,英文单词“Hello”,每个字母都可以通过ASCII编码来表示,然后计算机就可以存储、处理和传输这个单词。
UTF - 8示例
对于汉字“你”,在UTF - 8编码下,它可能占用3个字节(不同的汉字可能占用字节数不同)。而英文单词“Hello”在UTF - 8编码下,每个字母仍然像在ASCII编码中一样,只占用1个字节。所以UTF - 8既可以表示像“Hello”这样的英文内容,也可以表示像“你”这样的汉字内容,还可以表示其他多种语言的字符。
展开
7
5
赞了这篇文章
平台:Android
系统版本:14
稀土掘金版本:v6.6.8 (Build-727d5c924)
设备:vivo(V2118A)(OriginOS 4_PD2118_A_9.1.17)
问题描述:我怎么找不到写文章的按钮?!
系统版本:14
稀土掘金版本:v6.6.8 (Build-727d5c924)
设备:vivo(V2118A)(OriginOS 4_PD2118_A_9.1.17)
问题描述:我怎么找不到写文章的按钮?!
展开
1
点赞