【问题标题】:code a number into letters将数字编码成字母
【发布时间】:2011-01-20 10:51:39
【问题描述】:

假设我有类似 97463 的东西

我想把它编码成字母,比如 kljhs

我目前正在使用 php/javascript,但我想这是一个普遍的问题。

以可逆的方式执行此操作的最有效方法是什么?

(可逆的意思是给定数字我可以制作字母代码,然后只给出数字代码我可以返回字母)

【问题讨论】:

  • 你想通过什么逻辑进行编码? A=1, B=2...?

标签: php javascript


【解决方案1】:

你可以只使用 strtr 函数

$input = '123456';
$output = strtr($input, '0123456789', 'abcdefghij');

要反转,请使用

$input = 'bcdefg';
$output = strtr($input, 'abcdefghij', '0123456789');

http://codepad.org/6hGqJPD6

【讨论】:

  • 另一种解决方案更快,但这提供了更多控制。我喜欢!
【解决方案2】:

您可以使用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

【讨论】:

    猜你喜欢
    • 2013-01-04
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2015-11-09
    • 1970-01-01
    • 2019-04-24
    相关资源
    最近更新 更多