Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript将数字转换为字符?_Javascript - Fatal编程技术网

如何使用javascript将数字转换为字符?

如何使用javascript将数字转换为字符?,javascript,Javascript,如何将1234567890=ABCDEFGHIJ,例如360转换为CFJ 我知道如何为单个字符执行此操作: var chr = String.fromCharCode(97 + n); // where n is 0, 1, 2 ... 但不确定如何一次对多个/一组数字执行此操作:例如,230到BCJfromCharCode接受列表参数作为参数 String.fromCharCode(72,69,76,76,79)将打印“HELLO” 但是,您的示例数据无效。例如,字母“A”是65。您需要创建

如何将
1234567890=ABCDEFGHIJ
,例如
360转换为CFJ

我知道如何为单个字符执行此操作:

var chr = String.fromCharCode(97 + n); // where n is 0, 1, 2 ...

但不确定如何一次对多个/一组数字执行此操作:例如,
230到BCJ
fromCharCode接受列表参数作为参数

String.fromCharCode(72,69,76,76,79)将打印“HELLO”


但是,您的示例数据无效。例如,字母“A”是65。您需要创建一个逗号分隔的参数,并将其输入到函数中。如果您不提供逗号分隔的参数,您将试图解析一个单键代码,这很可能会失败。

您需要预先定义字母表。对于您的代码段,您似乎希望1-9映射到A-I,0映射到J,因此:

const alphabet = "JABCDEFGHI";
然后,只需使用数字的每个数字作为字母表中的索引:

function numberToString(num) {
    // Split out each digit of the number:
    const digits = Math.floor(num).toString().split("").map(Number);

    // Then create a new string using the alphabet:
    return digits.reduce((str, digit) => {
        return str + alphabet[digit];
    }, "");
}
这应该满足您的约束条件。下面是一个实际的例子:

const alphabet=“JABCDEFGHI”;
函数numberToString(num){
//将数字的每个数字分开:
const digits=Math.floor(num.toString().split(“”).map(Number);
//然后使用字母表创建一个新字符串:
返回数字。减少((str,数字)=>{
返回str+字母[数字];
}, "");
}
console.log(numberToString(360))//CFJ
console.log(numberToString(230))//BCJ
这将起作用:

函数转换(num){
返回数
.toString()//将数字转换为字符串
.split(“”)//将字符串转换为字符数组
.map(Number)//将字符解析为数字
.map(n=>(n | | 10)+64)//转换为字符码,更正为J
.map(c=>String.fromCharCode(c))//将字符代码转换为字符串
.join(“”);//将值连接在一起
}
console.log(convert(360));
控制台日志(转换(230))
console.log((1234567890+)。替换(/\d/g,c=>JABCDEFGHI'[c]))
console.log(String.fromCharCode(…[…1234567890+'').map(c=>(+c | 10)| 64))
选项1:映射它

const from=1234567890;
const answer=from
.toString()//转换为字符串,如果它已经是字符串,则忽略它
.split(“”)//拆分为数组
.map(x=>+x+97)//转换为字符编码
.map(String.fromCharCode)//转换为字符代码
.加入(“”);//转换回字符串

console.log(answer)
对于大写,
97
是错误的偏移量,它没有给您提供所需的结果,因为
0
J

360至CFJ

230至BCJ

函数转换(n){
返回String.fromCharCode(
…n.toString().split(“”).map(c=>(+c | | 10)+0x40)
);
}
console.log(convert(360));
控制台日志(转换(230));
输入函数(elm){
控制台清除()
console.log(转换(elm.value))
}

什么?为什么
1234567890
最终会成为
ABCDEFGHIJ
?您的转换标准是什么?如果没有任何标准很难说,您可以只输出一个随机字符串。或者您可以将整数解释为Base64值并输出相应的字符串,或者。。。有很多选择。除非您的标准是A=1、B=2、C=3……
?然后您可以将转换存储在数组中,并使用它逐个转换字符。这两者都会产生错误的结果。第一个结果特别糟糕,因为结果中填充了空格。第一个结果不生成空格。两个结果都返回
bcdefghija
。charcode逻辑遵循问题
String中提到的逻辑。fromCharCode(97+n)
正如作者提到的,这是用于单个结果的逻辑,但他不确定的是,当用于多个字符串时,如何实现该逻辑。因此,我不认为这是错误的@JLRisheIt的问题本身不一致-在问题中提供的逻辑和预期结果的解释是不一致的。我的答案是假设提供的逻辑是预期的,我的答案是解决多字符转换部分。“第一个结果不会产生空格。”伙计,单击您自己代码下的“运行代码片段”按钮。它为10位数字的输入生成一个长度为30的字符串,并用不可显示的字符填充。“我的答案是假设提供的逻辑是预期的,我的答案是解决多字符转换部分。”它没有为指定的输入提供请求的输出。你不能因为不理解最初的需求就自行制定需求。