【发布时间】:2011-01-20 10:51:39
【问题描述】:
假设我有类似 97463 的东西
我想把它编码成字母,比如 kljhs
我目前正在使用 php/javascript,但我想这是一个普遍的问题。
以可逆的方式执行此操作的最有效方法是什么?
(可逆的意思是给定数字我可以制作字母代码,然后只给出数字代码我可以返回字母)
【问题讨论】:
-
你想通过什么逻辑进行编码? A=1, B=2...?
标签: php javascript
假设我有类似 97463 的东西
我想把它编码成字母,比如 kljhs
我目前正在使用 php/javascript,但我想这是一个普遍的问题。
以可逆的方式执行此操作的最有效方法是什么?
(可逆的意思是给定数字我可以制作字母代码,然后只给出数字代码我可以返回字母)
【问题讨论】:
标签: php javascript
你可以只使用 strtr 函数
$input = '123456';
$output = strtr($input, '0123456789', 'abcdefghij');
要反转,请使用
$input = 'bcdefg';
$output = strtr($input, 'abcdefghij', '0123456789');
【讨论】:
您可以使用dechex() 将数字编码为十六进制,并使用hexdec() 进行反转:
$hex = dechex(97463); // "17cb7"
$dec = hexdec($hex); // 97463
或者,您可能想要使用base_convert() 来转换为从 2 到 36 的任意基数:
$enc = base_convert(97463, 10, 36); // "237b"
$dec = base_convert("237b", 36, 10); // 97463
【讨论】: