gpt4 book ai didi

javascript - 如何区分二进制和十六进制值

转载 作者:行者123 更新时间:2023-12-01 02:03:53 32 4
gpt4 key购买 nike

假设我需要用户输入二进制或十六进制值,程序将从那里获取它。有没有办法区分他们输入的值是二进制还是十六进制?

我以为我已经通过检查字符串是否包含大于 1 的字母或数字来弄清楚了,但是如果是 101101 或其他类似的十六进制输入呢?是否有可能在没有任何其他背景的情况下知道?

为了包含失败的尝试,我尝试了以下方法来检查字符串是否包含十六进制值可以包含的字母:

if (Number.isInteger(parseInt(input)))

但除了它不能解决上述问题(因为十六进制值并不总是有字母)之外,它也会失败,因为当字母混合到输入中时它仍然返回 true,因为它仍然以一种或另一种方式解析整数。

最佳答案

Is it even possible to know without any other context?

不,不是。编程语言通常允许各种数字系统中的数字文字,但必须对其进行相应的标记。在 JavaScript 中:

  • 无前缀:十进制。示例:12345
  • 0b 前缀:二进制。示例:0b10101
  • 0o 前缀:八进制。示例:0o123
  • 0x 前缀:十六进制。示例:0x12345

您可能需要相同的输入符号,或者提供另一个允许用户选择系统的控件(您仍然可以正确地在内部为输入添加前缀)。

<小时/>

为了完整起见,这里有一个函数,可以将这些输入中的任何一个转换为数字:

const radixTable = {
'0b': 2,
'0o': 8,
'0x': 16,
};

function convert(str) {
let radix = 10;
if (radixTable.hasOwnProperty(str.slice(0, 2))) {
radix = radixTable[str.slice(0,2)];
str = str.slice(2);
}
return parseInt(str, radix);
}

['12', '0b1100', '0o14', '0xC'].forEach(
str => console.log(`${str}:`, convert(str))
);

关于javascript - 如何区分二进制和十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50281142/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com