我想在不同的基数之间转换数字,例如十六进制和十进制。
示例: 如何将十六进制 8F
转换为十进制?
原文由 Yves 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想在不同的基数之间转换数字,例如十六进制和十进制。
示例: 如何将十六进制 8F
转换为十进制?
原文由 Yves 发布,翻译遵循 CC BY-SA 4.0 许可协议
我来到这篇文章需要从 base 10 转换为 62,反之亦然。虽然这里的解决方案很棒, parseInt
和 toString
只支持 base 2 到 36。所以如果有人发现自己和我处于类似的位置需要 base 2 到 62,我已经粘贴了我的解决方案如下。
https://gist.github.com/ryansmith94/91d7fd30710264affeb9
function convertBase(value, from_base, to_base) {
var range = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/'.split('');
var from_range = range.slice(0, from_base);
var to_range = range.slice(0, to_base);
var dec_value = value.split('').reverse().reduce(function (carry, digit, index) {
if (from_range.indexOf(digit) === -1) throw new Error('Invalid digit `'+digit+'` for base '+from_base+'.');
return carry += from_range.indexOf(digit) * (Math.pow(from_base, index));
}, 0);
var new_value = '';
while (dec_value > 0) {
new_value = to_range[dec_value % to_base] + new_value;
dec_value = (dec_value - (dec_value % to_base)) / to_base;
}
return new_value || '0';
}
原文由 Ryan Smith 发布,翻译遵循 CC BY-SA 3.0 许可协议
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答941 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
应用程序接口
要从十六进制字符串转换为数字:
字符串:必填。要解析的字符串
基数:可选。代表要使用的数字系统的数字(从 2 到 36)
要从数字转换为十六进制字符串:
示例基数值:
用法示例
整数值到十六进制:
十六进制字符串到整数值:
整数值转十进制: