如何通过shell脚本高效处理二进制数据?
- 内容介绍
- 文章标签
- 相关推荐
本文共计655个文字,预计阅读时间需要3分钟。
正确处理二进制数据+正确处理二进制数据必须确保以下三个环节是二进制安全的(Binary Safe):+ 从文件读取至内存;+ 数据处理过程;+ 内存写入至文件。那么,什么是二进制安全呢?通俗地说,二进制安全指的是在处理二进制数据时,确保数据在各个处理环节中不会因为格式错误或边界问题导致数据损坏或程序崩溃。
正确处理二进制数据正确处理二进制数据必须保证以下三个环节是二进制安全(Binary Safe)的:
- 从文件读取至内存;
- 处理数据过程中;
- 内存写入至文件。
那么二进制安全是什么?通俗来说就是不会特殊处理任何数据,例如说一个文件的字节序列为(十六进制表示)0x0a 0x0d,它读取至内存中也应该是0x0a 0x0d不发生任何变化。
shell脚本只有字符串和数值两种数据类型,显而易见存储二进制应该用数值类型变量,因为字符串变量在处理过程中可能会发生转义等二进制不安全的情况。
数据类型确定了,那么如何读取文件至内存。用od(Octal Dump)命令即可,此命令用于将文件内容以特定格式输出,以下例子将foo文件中每个字节以十进制无符号整数序列方式输出,且每行最大1024个字节。
od -An -v -t u1 -w1024 ./foo
稍微处理下输出将其封装成fread函数,data变量就得到一个数值类型的数组。
本文共计655个文字,预计阅读时间需要3分钟。
正确处理二进制数据+正确处理二进制数据必须确保以下三个环节是二进制安全的(Binary Safe):+ 从文件读取至内存;+ 数据处理过程;+ 内存写入至文件。那么,什么是二进制安全呢?通俗地说,二进制安全指的是在处理二进制数据时,确保数据在各个处理环节中不会因为格式错误或边界问题导致数据损坏或程序崩溃。
正确处理二进制数据正确处理二进制数据必须保证以下三个环节是二进制安全(Binary Safe)的:
- 从文件读取至内存;
- 处理数据过程中;
- 内存写入至文件。
那么二进制安全是什么?通俗来说就是不会特殊处理任何数据,例如说一个文件的字节序列为(十六进制表示)0x0a 0x0d,它读取至内存中也应该是0x0a 0x0d不发生任何变化。
shell脚本只有字符串和数值两种数据类型,显而易见存储二进制应该用数值类型变量,因为字符串变量在处理过程中可能会发生转义等二进制不安全的情况。
数据类型确定了,那么如何读取文件至内存。用od(Octal Dump)命令即可,此命令用于将文件内容以特定格式输出,以下例子将foo文件中每个字节以十进制无符号整数序列方式输出,且每行最大1024个字节。
od -An -v -t u1 -w1024 ./foo
稍微处理下输出将其封装成fread函数,data变量就得到一个数值类型的数组。

