linux c 文本读成十六进制,用Linux/Unix命令把十六进制转换成十进制(转)

那天写个脚本,需要把十六进制的数字转成十进制的打出来,发现不知道要怎么弄,搜一下,原来还是很简单的,比用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://blog.sina.com.cn/s/blog_a3052b4a0100z4nk.html

C语言十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方

#include /* 十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方: 在16进制中:a(A)=10 b(B)=11 c(C)=12 d(D)= ...

Java 第十一届 蓝桥杯 省模拟赛十六进制转换成十进制

问题描述 请问十六进制数1949对应的十进制数是多少?请特别注意给定的是十六进制,求的是十进制. 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这 ...

Java中将0x开头的十六进制字符串转换成十进制整数

1.Integer.toString(int i) 由于input(输入数据)是以0x开头的字符串,并不是整型.因而在用 String s = Integer.toString(input); 时用会 ...

linux c/c++ IP字符串转换成可比较大小的数字

由www.169it.com搜集整理 IP字符串转换成可比较大小的数字,具体代码如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include "stdio. ...

linux环境下deb格式 转换成rpm格式

linux环境下deb格式 转换成rpm格式 使用alien工具转换deb格式到rpm格式 alien_8.87.tar.gz 下载alien_8.87.tar.gz [root@mysqlnode2 ...

输入二进制数转换成十进制数(在cin>>和cin.get()上掉的坑)

题目:输入一个二进制数转换成十进制. 题目分析:书上说,在一般情况下,c++的键盘输入可以识别是十进制数.八进制数和十六进制数,因此输入的二进制数据要作为字符处理.(其实我觉得数字也没问题吧). 正确 ...

Linux xargs将输出数据流转换成命令参数

200 ? "200px" : this.width)!important;} --> 介绍 我们可以利用管道将一个命令的“标准输出”作为另一个命令的“标准输入”:但是这里的 ...

Linux基础命令---文本格式转换expand,unexpand

expand 将文件中的tab转换成空格,结果送到标准输出.如果没有指定文件,那么从标准输入读取. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.F ...

转:linux/unix命令行终端的光标及字符控制快捷键

from:http://linux.chinaunix.net/techdoc/system/2007/11/23/973027.shtml 在使用linux/unix的命令行终端时,有时候会碰到键盘 ...

随机推荐

关于Quartz.NET作业调度框架的一点小小的封装,实现伪AOP写LOG功能

Quartz.NET是一个非常强大的作业调度框架,适用于各种定时执行的业务处理等,类似于WINDOWS自带的任务计划程序,其中运用Cron表达式来实现各种定时触发条件是我认为最为惊喜的地方. Quar ...

php变量 写时改变 写时复制

写时复制 $var = 1; $var2 = $var; #此时$var2 与 $var 指向同一个zval refcount = 2: $var = 2; # 此时$val 改变 所以 $var 与 ...

C#语法问答式总结

传入某个属性的set方法的隐含参数的名称是什么?value,它的类型和属性所声名的类型相同. 如何在C#中实现继承?在类名后加上一个冒号,再加上基类的名称. C#支持多重继承么?不支持.可以用接口来实 ...

BZOJ 1041 圆上的整点

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1041 题意:求圆x^2+y^2=r^2上的整点. 思路:由于对称性,我们只需要计算第一象 ...

java中的synchronized关键字

参考:http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html 多线程并发问题的根因: 在一个对象中有一个变量i=0,有两个线 ...

Tomcat8 配置NIO

conf/server.xml 打开:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Linux系统上,发送UDP数据包十六进制需要使用nc命令和hexdump命令配合使用。 首先需要安装hexdump工具,可以通过以下命令进行安装: sudo apt-get install bsdmainutils 接着使用nc命令发送UDP数据包,指定目标IP和端口,同时使用echo命令发送十六进制数据,并使用hexdump命令十六进制数据转换二进制: echo -n -e '\x68\x65\x6c\x6c\x6f' | nc -u <目标IP> <目标端口> | hexdump -C 其中,echo命令的-n选项表示不自动换行输出,-e选项表示启用义字符。后面紧跟的十六进制数据表示需要发送的数据内容。 nc命令的-u选项表示使用UDP协议发送数据包。 最后使用hexdump命令将数据转换二进制形式进行发送。使用-C选项表示以十六进制和ASCII码的形式进行输出。 以上就是在Linux系统上使用nc命令发送UDP十六进制数据的方法,需要注意的是,发送的数据必须是十六进制格式的才能正常发送。 ### 回答2: nc (netcat) 是一个网络工具,可以在 Linux 操作系统中发送和接收网络数据。它可以使用两种不同的模式,分别是 TCP 和 UDP。 在使用 nc 发送 UDP 数据时,我们可以先将需要发送的内容转换十六进制格式,然后使用以下命令发送: ``` echo -n -e "\x01\x02\x03\x04" | nc -u -w1 192.168.0.1 1234 ``` 其中,`\x01\x02\x03\x04` 是需要发送的十六进制数据,`-n` 参数表示不要发送换行符,`-e` 参数表示启用义序列。`-u` 参数表示使用 UDP 协议,`-w1` 参数表示设置超时时间为 1 秒。`192.168.0.1` 是目标主机的 IP 地址,`1234` 是目标主机开放的 UDP 端口。 通过以上命令,我们可以将十六进制数据发送到指定的主机和端口,并且在超时时间内等待目标主机的响应。同时,我们也可以使用类似的命令接收来自其他主机的 UDP 数据,例如: ``` nc -u -l -p 1234 | xxd ``` 其中,`-l` 参数表示监听模式,`-p 1234` 表示监听 UDP 端口号为 1234。`xxd` 命令可以将接收到的数据转换十六进制格式进行显示。 通过以上命令,我们可以在 Linux 操作系统中使用 nc 工具来发送和接收 UDP 数据。同时,我们也可以根据具体的业务需求,对发送和接收的数据进行相应的处理和解析。 ### 回答3: nc是一款常用的网络工具,可以用来在Linux系统中发送UDP(User Datagram Protocol)协议的数据包。UDP是一种无连接、不可靠的传输协议,适用于对数据可靠性要求不是很高的应用场景,如在线游戏、语音通话等。 在使用nc工具发送UDP数据包时,可以通过指定数据格式来发送十六进制数据。具体操作步骤如下: 1. 打开终端,输入以下命令来发送UDP数据包: $ echo -n -e '\x01\x02\x03\x04' | nc -u -w1 localhost 12345 其中,echo命令指定发送的十六进制数据,-n选项表示不在输出末尾添加换行符,-e选项表示开启义序列,\x01\x02\x03\x04表示待发送的十六进制数据。nc命令指定发送UDP协议的数据包,-u选项表示使用UDP协议,-w1选项表示设置超时时间为1秒,localhost表示目标主机IP地址或域名,12345表示目标端口号。 2. 在目标主机上启动UDP服务器程序来接收数据包: $ nc -ul -p 12345 其中,nc命令指定开启UDP服务器程序,-ul选项表示使用UDP协议,-p 12345表示绑定监听的端口号。 3. 在终端输入以上发送命令,观察服务器端是否收到并处理了数据包。 以上是在Linux系统中使用nc工具发送UDP协议的十六进制数据的方法。需要注意的是,在发送和接收UDP数据包时,要保证目标主机和端口号正确并且网络连接正常,否则可能导致数据包无法到达或丢失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值