bash - Bash 中的十六进制转十进制
问题描述
我知道我们可以使用 bash 将十六进制转换为十进制
#!/bin/bash
echo "Type a hex number"
read hexNum
echo $(( 16#$hexNum ))
但是当我用 运行它时hexNum=9b4bbba36e494bcd
,它给了我-7256500063973061683
负值,即 2 的补码。
我不希望它是 2 补码。我想要hexNum=9b4bbba36e494bcd
as 的输出11190244009736489933
。如https://www.rapidtables.com/convert/number/hex-to-decimal.html?x=9b4bbba36e494bcd
如何使用 bash 获得此输出?请帮忙!
解决方案
正如评论中所指出的,您的示例中的数字太大了。bash
使用固定大小的整数进行计算。大数字会溢出。
bc
支持任意大数,也可以进行基本转换。但是,bc
需要以大写形式写入十六进制数字,因此您必须先转换输入。bash
有一个内置的参数替换来转换为大写:
hex=9b4bbba36e494bcd
echo "ibase=16; ${hex^^}" | bc
推荐阅读
- asp.net-mvc - 使用join时如何在linq中选择*
- d3.js - d3 beeswarm chart - 修改为金字塔形堆叠
- javascript - 类型错误:_co.post 未定义
- google-apps-script - urlfetch 并不总是在 url 中加载查询
- gcc - 使用 arm-linux-gnueabihf 进行交叉编译
- oracle - 在块非常慢的 oracle 表单上搜索记录
- python - 如何使用 xpath 选择带有 attrs 的 div?
- ios - iOS Swift Multiline UILabel 与 UITableViewCell 内的 StackView
- ios - 为什么我收到错误“无法将类型(类)的值分配给类型 UICollectionViewDelegate、UICollectionViewDataSource?”
- entity-framework - 是否有针对 Visual Studio 2019 的 enable-migrations Command Not foundError 的解决方案?