zoukankan      html  css  js  c++  java
  • Linux系统调用学习——XXD

    xxd命令主要功能

    xxd命令主要用来查看文件对应的十六进制形式,也可以将文件对应的十六进制形式输出到一个指定的文件。
    使用此命令所支持的特有选项,亦可以以二进制的形式查看文件。
    常用选项:

    (1)-a : 它的作用是自动跳过空白内容,默认是关闭的(但实践后发现没有效果)
    (2)-c : 它的后面加上数字表示每行显示多少字节的十六进制数,默认是16bytes,最大是256bytes
    (3)-g : 设定以几个字节为一块,默认为2bytes
    (4)-l : 它的后面加上数字表示显示多少字节的内容
    (5)-s : 后面接【+-】和address。“+”表示从地址处开始的内容,“-”表示距末尾address开始的内容
    (6)-b : 以二进制(0 or 1)的形式查看文件内容
    (7)-r: 反向操作:将hexdump转换(或patch)成二进制。 如果不写入 stdout,xxd 将写入其输出文件而不截断它。 使用组合 -r -p 读取没有行号信息和特定列布局的纯十六进制转储。 任何地方都允许额外的空格和换行符。
    

    xxd命令实践

    xxd基本功能(不带参数)

    -a

    发现并没有跳过空白内容,猜测是不是和sort中-b有类似原因

    -c

    -c参数后接数字表示每行显示多少字节的十六进制数

    -v

    显示版本

    -l

    显示多少字节的内容

    -b

    以二进制形式查看文件内容

    -i

    使用C语言文件样式输出

    推导xxd实现过程

    man XXD

    man 1 XXD查看帮助文档

    examples

    see also

    因为功能类似,可以类比之前所学习的od命令。由xxd功能可知一定会需要用到open,read,write,close系统调用,

    xxd实现伪代码

    首先需要用open系统调用打开一个文件,并得到fd,如果fd小于0则意味着文件打开失败。
    之后是读文件,读文件内容多少需要由用户输入参数提供,系统提供缺省默认值。
    在读文件的过程中写个循环,将read函数返回值作为文件字符数,此后计算每个字符的16进制对应地址并按照格式用write系统调用输出到屏幕
    最后关闭文件。
    (以上是最基本的xxd功能,其他参数功能的实现仅需增加一个命令行传入参数字符串的比较,并增添对应模块)
    伪代码可参照之前myod代码最基本模块,功能相同。

  • 相关阅读:
    小程序支付
    小程序传参
    git
    学习过程遇到问题的解决方法
    进程创建注意事项:函数及对应包
    进程创建:函数及对应包
    mac解决eclipse 端口占用问题
    暴力
    doc2vec
    Java正则表达式的解释说明
  • 原文地址:https://www.cnblogs.com/20191218tangqiheng/p/15457347.html
Copyright © 2011-2022 走看看