用于字符串到整数转换的PHP编码类型

时间:2012-07-16 20:01:24

标签: php encoding

我想知道如何从包含字母和数字的字符串生成数字。重要的是,相同的字符串必须始终生成相同的数字。

我试图在PHP中找到一个编码类型,它返回一个字符串的整数。

我不需要将其转换回字符串。有没有这样的编码?

3 个答案:

答案 0 :(得分:0)

我想我得到了解决方案。

我正在寻找像crc32这样的东西。 它给了我一个字符串的整数。

谢谢你们的帮助,我为再次不清楚而道歉。

答案 1 :(得分:0)

您正在寻找hash function。我在这里发布了一个示例算法,用于从字符串中生成一个小数字:

// making hex hash from sentence
$s = hash( 'ripemd160', "I'm a dog" );

// taking last 5 hex digits
$s2 = substr( $s, -5 );

// converting hex digits to number
echo hexdec( $s2 );

示例算法的说明:

  • 从字符串中创建hash。 'ripemd160'是hash algorighm的名称,其他哈希算法:“md5”,“sha256”,“haval160,4”等等。“我是狗”是一个散列的句子样本。
  • 从哈希中取几个数字来取一点数。对此我take last 5 digits
  • 最后转换hex digits to number

请注意,这只是您可以从字符串生成数字的多种方式的示例。

<强>测试

dani@egg-v2:~$ php5
<?php
$a=array( "I'm a dog", "I'm a cat", "I'm a car" );
foreach ($a as $e) {
   $s = hash( 'ripemd160', $e) ;
   $s2 = substr( $s, -5 );
   echo "Hash of $e: " . hexdec( $s2 ) . "\n";
}
?>
Hash of I'm a dog: 147508
Hash of I'm a cat: 23112
Hash of I'm a car: 563887  <-- little change in string but big change in number

答案 2 :(得分:0)

整数只能存储有限数量的数据,而字符串可能存储的数据远不止于此。如果你将一个字符串转换为整数,不知何故,它总会与其他东西发生碰撞(用两个词来说,它不是唯一的!).... 你最好选择别的东西(可能是盐腌MD5?)!