比如:
将数字 0 转换为 30
数字 2 转换为 3F
数字 3 转换为 3D
数字 4 转换为 35
a= '0234'
怎么才能 a = '303F3D35'
将数字 0 转换为 30
数字 2 转换为 3F
数字 3 转换为 3D
数字 4 转换为 35
a= '0234'
怎么才能 a = '303F3D35'
|
1
translate
|
|
2
小白一个 想到的就是 a[-1] 一个个的 if 替换 不知道有什么简单的方法吗
|
|
3
额…好像不行 translate 是单个字符映射
|
|
4
直接用字典吧…
|
|
5
@blless 求例子
|
|
6
我用手机 只能大概写一下,
strmap ={"0":"30",…} src ="0234" str.join([strmap[x] for x in str]) 好久没写 有点忘了 手机敲代码可真难受 |
|
7
num_map = {
"0": "30", "2": "3F", "3": "3D", "4": "35", } a = '0234' result = "".join([num_map[n] for n in a]) 虽然蠢,但有效 /w\ |
|
MonoLogueChiJan 13, 2018 via Android
8
你是要求能加密,还是加密之后还可以再解密。如果不需要解密就很简单了,利用已有的加密算法很容易实现的,比如我最近设计的一个登录系统用了 md5 加密。如果需要可以解密的话,可以自己建立一套运算规则,比如利用 ascii 码做一个简单的运算。但是自己建立的规则安全性不知道怎么样。
|
|
velaJan 13, 2018
9
如果能映射到 uint64 空间,建议先做跳码再转换。
|
|
awfeJan 13, 2018
10
既然是都是数字,放数组里吧,数字直接当索引
|
|
woscaiziJan 13, 2018 via iPhone
11
建立数字和加密字符串的对应 map。
字符串转字符数组。 循环,利用查表法,拼接新的加密串。 不过应该针对所有的字符串都循环相同的次数。 比如人为指定循环次数为 100 次。 这样每次加密用的时间都相同。 |
|
draguoJan 13, 2018
12
|
|
liuminghao233Jan 13, 2018 via iPhone
13
一个 for 不就搞定了吗
|
|
s7venJan 13, 2018 via Android
14
哈夫曼,还能压缩
|
|
WordTianJan 13, 2018 via iPhone
15
最简单的方法就是做个映射集合,然后对要加密的字符循环替换。。。
|
|
akiraJan 14, 2018
16
@MonoLogueChi 自己设定的规则,除非是你数学很牛逼,不然一般都不如现成的
|
|
geelawJan 14, 2018 via iPhone
17
这是哪门子加密呃,几乎上面每一层我都没看出来这玩意儿和加密的关系
|
|
18
用 hashids.org 最省事
|
|
580a388da131Jan 14, 2018
19
没看明白究竟问题在哪
难道是想问 字符串怎么打散然后循环替换? |
|
uolcanoJan 14, 2018
20
自己弄着玩就算了,真要加密是要经得起密码分析(cryptanalysis)的。一般都是用现有的算法,比如 DES/AES/ECC/RSA,你自己搞出来一套是很难的。
|
|
jxie0755Jan 14, 2018
21
str.maketrans(x[, y[, z]])
str.translate |
|
cbiqihJan 14, 2018
22
temp = {'0': '30', '2': '3F', '3': '3D', '4': '35'}
a = '0234' print(''.join(map(temp.get, a))) |
|
FeiyuWang2017Jan 14, 2018 via Android
23
这不就是那个 Python challenge 第二题吗
|
|
FeiyuWang2017Jan 14, 2018 via Android
24
|
|
run2Jan 14, 2018
25
@MonoLogueChi #8 噗~“设计” “ md5 加密”
好高级啊 |
|
MonoLogueChiJan 14, 2018 via Android
26
@sobigfish 这个东西并不高级啊,你想说啥就直说
|
|
sampengJan 15, 2018
28
这和加密什么关系。。。。。加密肯定用已经成熟的加密方案。否则就是自己找死
|
|
sampengJan 15, 2018
29
ps。。md5 不是加密。。。。
|