lexical-analysis - 某种格式的二进制数据是如何解析的?

标签 lexical-analysis linguistics

考虑到二进制数据(视频/图像/音频/可执行文件)可以被视为一长串随机字节, 当数据采用特殊格式(SQL、数据库中的 BOLB、MP3、JSON、XML 等)时,解析器如何知道特殊的字符(或字符序列,如 {,},\t,space,EOF)用于格式化,而不是二进制数据的一部分,反之亦然?

另外,我不太确定这个问题属于哪一类,所以我把词法分析和语言学放在一起。计算机科学研究的哪些学科/领域?

最佳答案

这个问题确实有点奇怪。我有点不清楚你在这里问的到底是什么,但总而言之,并非所有二进制数据(假设你的意思是机器可读数据)都是平等的。例如:音频、图像、视频不是可执行数据,它们是解析数据;因此,它们的处理方式有所不同。

此外,“二进制数据”并不像您第一次打开十六进制编辑器时想象的那么随意:)。可执行文件被构造为数据和代码段,因此通过这些标志,计算机知道如何适本地处理事物。至于您提到的其他三种类型,它们的结构都不同,具体取决于它们的文件格式,这就是为什么有这么多不同的文件格式!解析这些文件的可执行程序知道如何根据代码中包含的有关文件格式的信息来处理它们,这当然意味着程序必须知道如何处理文件格式并了解如何分段加载的信息它正确,这就是您无法在 Microsoft Paint 中打开 MP3 的原因。

对于文件格式和数据存储的研究,它在很多领域都有应用,与其说它本身是一个领域,不如说是一个在很多领域出现的主题。信息论、逆向工程、自然语言处理和许多其他理论可用于理解不同的文件类型及其存储数据的方式。无论如何,这只是一个简短、粗略的解释,您可以通过谷歌搜索很多东西(尝试使用 .exe 文件格式或 .jpg/.png 文件格式开始)。

关于lexical-analysis - 某种格式的二进制数据是如何解析的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20228023/

相关文章:

java - 验证表达式

Azure 认知搜索 - 什么时候会使用不同的搜索和索引分析器?

swift - 查找字符串中第 N 个单词的范围

c - 如何让我的词法分析器程序打印出的不仅仅是分隔符?

java - 词法分析时如何存储token

nlp - winword中汇总功能的背景

php - PHP 的同义词库类或 API [编辑]

python - NLTK WordNet 动词层次结构

java - 如何在 OpenNLP 中实现一个好的 Pronoun Resolver 算法?