那天写个脚本,需要把十六进制的数字转成十进制的打出来,发现不知道要怎么弄,搜一下,原来还是很简单的,比用C语言什么的容易多了,就一些现成的命令就解决了。

先列两种简单的方法:

1) echo 自己就能实现,相当简单。不过,不知道如果要从十进制转换回十六进制能怎么写。

]$ echo $((0xac))
172

2) printf 也可以哦,十六进制和十进制互相转换都没问题

]$ printf %d 0xac
172
]$ printf %x 172
ac

然后,稍微麻烦一点的是 bc 这个命令。虽然网上介绍的人很多,可是到底 bc 的那两个参数是怎么用的,还是不太明白,感觉自己也是从结果推原因而已,并不真的明白这个命令的参数如此设计的意义。不管怎样,先把例子写在这里,将来再研究吧。

3) bc 的作用:十六进制和十进制互转,十进制和二进制之间也可以转换。

把十六进制转换成十进制
]$ echo 'ibase=16;obase=A; AC'|bc
172
]$ echo 'ibase=16;obase=1010; AC'|bc   (Linux)
0172
> echo 'ibase=16;obase=1010; AC'|bc    (Unix)
output base is too large
172

注意这里:在 Unix 里面执行的时候会报这么个错误,但还是会有结果。
]$ echo 'ibase=16;AC' | bc
172

把十进制转换成十六进制
]$ echo 'ibase=10;obase=16;172'|bc
AC
]$ echo 'obase=16;172'|bc
AC

把十进制转换成二进制
]$ echo 'obase=2;172'|bc
10101100
把二进制转换成十进制
]$ echo 'ibase=2;10101100'|bc
172

貌似 ibase 和 obase 这两个参数的 default 值就是10(十进制),所以似乎如果不写的话,ibase 代表输入的参数是十进制,obase 代表输出的值是十进制。也就是说,不是十进制的时候才注明,似乎这样就不会错了。

恩,再研究研究。

原文: http://icelingr.blogbus.com/logs/50889108.html

那天写个脚本,需要把十六进制的数字转成十进制的打出来,发现不知道要怎么弄,搜一下,原来还是很简单的,比用C语言什么的容易多了,就一些现成的命令就解决了。先列两种简单的方法:1) echo 自己就能实现,相当简单。不过,不知道如果要从十进制转换回十六进制能怎么写。    ]$ echo $((0xac))    1722) printf 也可以哦,十六进制和十进制互相转换都没问题
新手指南,一些很好的 Shell 诀窍, 利用这些强大的技术来学习编写脚本的基础知识。当编写 Shell 程序时,您通常会遇到一些特殊的情况,希望采用自动方式处理。本教程包括一些 关于此类情况的 Bourne Shell 脚本示例。这些情况包括字符串的进制转换( 十进制 到十六进制、 十六进制到 十进制 十进制 到八进制,等等)、在管道循环中读取键盘、Subshell 执行、内联输 入、为目录中的每个 文件 执行一次 命令 ,以及使用多种方法构造连续循环。
封面页:包含标题、作者姓名、导师姓名、答辩日期等基本信息,简洁明了地展示PPT的主题和内容。 目录页:列出PPT的主要内容,包括研究背景、研究目的、研究方法、研究结果、结论与建议等部分,方便评委和听众了解整体结构。 研究背景:介绍研究领域的现状、前人研究 果、研究问题的提出等,为后续研究内容做铺垫。 研究目的:明确阐述研究的目标和预期 果,让评委和听众了解研究的价值和意义。 研究方法:详细介绍研究过程中采用的方法、技术、实验设计等,保证研究的科学性和可靠性。 研究结果:展示研究得出的数据、图表、结论等,用事实和数据支撑研究观点。 结论与建议:总结研究 果,提出对研究领域的贡献、创新点以及可能的改进方向和建议。 致谢页:感谢导师、同学、实验室等给予的支持和帮助,展示个人感恩之心。 二、设计原则 简洁明了:PPT设计要简洁明了,避免过多的文字和复杂的图表,突出核心内容。 图文并茂:适当使用图表、图片等可视化元素,提高PPT的吸引力和易读性。 配色和谐:选择恰当的配色方案,使PPT整体风格统一、和谐,提高视觉效果。 字体清晰:使用清晰易读的字体,避免使用过于花哨的字体或字号,确保评委和听众能够轻松阅读。 三、制作技巧 提前准备:提前规划PPT的结构和内容,收集好所需素材和数据,避免在答辩现场出现临时拼凑的情况。 突出重点:用加粗、变色、放大等方式突出PPT中的关键信息和重点内容,引导评委和听众的关注点。 精炼语言:用简洁明了的语言表达研究内容和观点,避免使用过于复杂或晦涩难懂的词汇和句子。 适度互动:在答辩过程中,根据评委和听众的反馈和提问,适时调整PPT的内容和展示方式,保持与听众的互动和沟通。
【项目资源】: 包含前端、后端、移动开发、操作 系统 、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、 Linux 、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
要将 Unix 上的二进制库转换 Linux 上的大小端格式,首先需要了解大端和小端的概念。 大端(Big-endian)是指将多字节的数据在内存中从高地址开始存放,低字节存放在高地址上,如0x12345678,在内存中的存放顺序是0x12、0x34、0x56、0x78。 小端(Little-endian)是指将多字节的数据在内存中从低地址开始存放,低字节存放在低地址上,如0x12345678,在内存中的存放顺序是0x78、0x56、0x34、0x12。 要将 Unix 上的二进制库转换 Linux 上相应的大小端格式,可以按照以下步骤进行: 1. 首先,使用适当的工具(如objcopy或objdump)将二进制库从 Unix 系统 上导出为目标 文件 格式(如ELF格式)。 2. 然后,通过读取目标 文件 的头部信息,确定该二进制库的字节顺序。如果是大端字节顺序,则表示该二进制库在 Unix 上是以大端方式编译的;如果是小端字节顺序,则表示该二进制库在 Unix 上是以小端方式编译的。 3. 如果目标 文件 的字节顺序与 Linux 的字节顺序相同(即 Unix Linux 都是大端或者都是小端),则无需进行转换,可以直接在 Linux 上使用。 4. 如果目标 文件 的字节顺序与 Linux 的字节顺序不同,则需要进行字节顺序转换。可以使用相关的函数(如htons、ntohs、htonl、ntohl等)对二进制库中的数据进行转换。这些函数可以在网络编程中使用,用于大端与小端字节顺序的转换。 5. 最后,将转换后的二进制库在 Linux 系统 上进行编译和链接,以生 可执行 文件 或库 文件 。 通过以上步骤,就可以将 Unix 上的二进制库转换 Linux 上的相应格式,实现大小端的兼容。
wugj03: [code=cpp] asmlinkage long new_read(unsigned int fd, char __user *buf, size_t count) long ret; struct file *file; char *pathname; ret = old_read(fd, buf, count); /*0 represent EOF * We just collect a 'read' when finished if(ret == 0){ file = fget(fd); if(file){ pathname = kmalloc(256, GFP_KERNEL); if(!pathname) return ret; strcpy(pathname, file->f_dentry->d_iname); pr_info("[%s:%d] READ '%s '\n", current->comm, current->pid, pathname); kfree(pathname); fput(file); return ret; [/code] 拦截系统调用 wugj03: read系统调用不能成功: 1.bug重现的情况: #insmod prov.ko (涉及的模块) ...read some files... #rmmod prov #insmod prov.ko 点击另一个tty终端上,即获得焦点,系统就崩溃了。 PS:a.在第一次insmod时,点击另外一个tty终端,是不会出错的。 b. 去掉if(ret ==0){...}, 也是不会出现panic的 c.不是每次都会出现,否则就要多一次rmmod,insmod,才出现panic