linux转16进制
Ⅰ linux 下有个hexmp函数,把二进制换成16进制显示,有没有功能相反的函数
vim 自带的 xxd 就可以完成转十六进制和反转的功能,反转是只要把十六进制数按它转出的格式排好(右侧的显示符号可以不管),就可以转换。如果不在乎转完的十六进制格式,那用 xxd -ps 更方便。
Ⅱ 请教,怎么向linux下串口发送16进制数比如0xFA之类的
在程序中打开你的串口设备,int fd; fd = open("/dev/ttyS1",O_RDWD);
比如你要发送0x01,0x02,0x03,0x04,
char buf[256]={0x01,0x02,0x03,0x04};
write(fd,buf,4);
直接往你的串口写四个字节的数就可以了,在你的另一个程序中读取你往串口写的那几个数,十六进制打印出来就可以了。
Ⅲ linux cpu使用率过高排查
方法一
第一步:使用
top命令,然后按shift+p按照CPU排序
找到占用CPU过高的进程的pid
第二步:使用
top -H -p [进程id]
找到进程中消耗资源最高的线程的id
第三步:使用
echo 'obase=16;[线程id]' | bc或者printf "%x
" [线程id]
将线程id转换为16进制(字母要小写)
bc是linux的计算器命令
第四步:执行
jstack [进程id] |grep -A 10 [线程id的16进制]”
查看线程状态信息
方法二
第一步:使用
top命令,然后按shift+p按照CPU排序
找到占用CPU过高的进程
第二步:使用
ps -mp pid -o THREAD,tid,time | sort -rn
获取线程信息,并找到占用CPU高的线程
第三步:使用
echo 'obase=16;[线程id]' | bc或者printf "%x
" [线程id]
将需要的线程ID转换为16进制格式
第四步:使用
jstack pid |grep tid -A 30 [线程id的16进制]
打印线程的堆栈信息
案例分析
场景描述
生产环境下JAVA进程高CPU占用故障排查
解决过程
1、根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。
2、找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
1[root@localhost ~]# ps -mp 2633 -o THREAD,tid,time | sort -rn
显示结果如下:
化主动为被动的方式,一方面减轻了运维工程师的工作,另一方面也减小了运维漏看或者忽略告警的情况发生。
Ⅳ Linux下怎么查看16进制文件
1、xxd - make a hexmp or do the reverse.
能够显示文件对应的十六机制格式,同时还能将修还后的十六进制格式反写回文件,一般与vim结合使用。(在 vi 或 vim 的命令状态下)
:%!xxd 将当前文本转换为16进制格式。
:%!xxd -r 将当前文件转换回文本格式。
如果没有此命令,请先安装vim-common
rpm -qf /usr/bin/xxd
vim-common-7.4.160-1.el7_3.1.x86_64
2、od - mp files in octal and other formats
可以通过指定参数为查看十六进制
-A 指定左边侧栏显示的地址基数,默认为八进制
-t 指定输出单元的进制格式和字节数
-x = -t x2 输出单元为双字节(注意:每单元内排列顺序从左到右为 [高字节|低字节])
例:od -A x -t x1 file| more
3、hexmp - ascii, decimal, hexadecimal, octal mp
查看十六机制的首选工具。
-c 每单元以字节为单位,显示出对应的ASCII码
-C 每单元以字节为单位,同时显示十六机制和ASCII码
4、linux也有GUI的十六进制编辑器,例如ghex和bless