有这么个数组: [25867, 13799, 14327, 25933, 14447, 14087, 25471, 13249, 13457, 25303, 25423, 14639, 14489, 12757, 12589, 14747, 14177, 13627, 14401, 13147, 14051, 26053, 13159, 26309, 25793, 14149, 25841, 12763, 14639, 26309, 25847, 25171, 25073, 25747, 26237, 25679, 12799, 25913, 14843, 13309] 需要转换成字母和数字的一串字符,提示是:ASCII 我试了几种组合出来的都是有各种符号的字符串,请教高手这种五位数字要怎么转换?
1
tomato3 2017-08-27 22:29:52 +08:00
var a = [25867, 13799, 14327, 25933, 14447, 14087, 25471, 13249, 13457, 25303, 25423, 14639, 14489, 12757, 12589, 14747, 14177, 13627, 14401, 13147, 14051, 26053, 13159, 26309, 25793, 14149, 25841, 12763, 14639, 26309, 25847, 25171, 25073, 25747, 26237, 25679, 12799, 25913, 14843, 13309]
var l1 = []; var l2 = []; var l3 = []; var _ =String.fromCharCode.bind(String); var __ =String.fromCodePoint.bind(String); var $ = (n)=>parseInt(n,16); var list = a.map((n,i)=>{ l1[i]=~~(n/10000); l2[i] = ~~((n%10000)/100); console.log() l3[i] = (n%100); console.log(i,l1[i],l2[i],l3[i],_(l2[i]),_(l3[i]),_($(l2[i])),_($(l3[i])),__($(l2[i])),__($(l3[i]))) var hex = 0; if(l1[i]==2){ hex =l2[i] }else{ hex =l3[i] } return String.fromCodePoint(parseInt(hex,16)) }) console.log(list) 输出了所有,看了一下,似乎只有一列是都有字符的,其他的列没有。 不知道前面那个 1,2 有什么用。 |
2
v1024 2017-08-28 07:59:14 +08:00 via iPhone
parseInt(num, 16)
|
3
winglight2016 OP @tomato3 没看明白你的代码做了什么转换?这些数字不是 16 进制啊?
|
4
winglight2016 OP @v1024 转了 16 进制依然没看出什么格式的数据
|
5
Arrowing 2017-08-28 10:37:42 +08:00
楼主把原题目的意思改得面目全非。。。
|
6
coolyujiyu 2017-08-28 11:41:03 +08:00
楼主只看里面的数组,不读前面的描述?你确定是让你直接解 5 位数字?你用翻译工具翻译看看
|
7
wingkou 2017-08-28 11:42:56 +08:00 via Android
读图(敲黑板
|
8
wingkou 2017-08-28 11:43:22 +08:00 via Android
读题。。。
|
9
winglight2016 OP 你们都不看我给的数字和原始的数组有多大区别吗?我给的 40 位数组是已经处理过的啊~~~
|
10
winglight2016 OP @coolyujiyu 你要是读懂了描述,不妨和工具翻译的结果比较一下,看看自动翻译的结果到底能不能用?
|
11
misaka20038numbe 2017-08-28 12:24:13 +08:00
1.去掉非质数 2.右移(右移多少位我看不懂英文不知道)
|
12
leewangyang 2017-08-28 12:48:58 +08:00 via Android
@misaka20038numbe 右移π的第 322 小数位
|
13
leewangyang 2017-08-28 13:01:36 +08:00 via Android
查了下表,322 位是 8,也就是要右移 8 位,如果你滤质数没滤错的话,我用你给的跑了一下['e', '5', '7', 'e', '8', '7', 'c', '3', '4', 'b', 'c', '9', '8', '1', '1', '9', '7', '5', '8', '3', '6', 'e', '3', 'f', 'd', '7', 'd', '1', '9', 'f', 'd', 'b', 'a', 'd', 'f', 'd', '1', 'e', '9', '3'] @winglight2016
|
14
winglight2016 OP |
15
sinalvee 2017-08-28 17:54:58 +08:00 1
```
[25867, 13799, 14327, 25933, 14447, 14087, 25471, 13249, 13457, 25303, 25423, 14639, 14489, 12757, 12589, 14747, 14177, 13627, 14401, 13147, 14051, 26053, 13159, 26309, 25793, 14149, 25841, 12763, 14639, 26309, 25847, 25171, 25073, 25747, 26237, 25679, 12799, 25913, 14843, 13309].map(num => num >> 8).map(num => String.fromCharCode(num)) ``` |
16
winglight2016 OP @sinalvee 啊,原来是数字右移 8 位,我理解成数组右移 8 位了。。。感谢大神!
|