我想知道如何从包含字母和数字的字符串中生成一个数字。要求是相同的字符串必须始终生成相同的数字。
我试图在 PHP 中找到一种编码类型,它返回一个字符串的整数。
我不需要将其转换回字符串。有没有这样的编码可用?
我想我得到了解决方案。
我一直在寻找类似 crc32 的东西。它给了我一个字符串的整数。
谢谢你们的帮助,我很抱歉再次不清楚。
您正在寻找一个散列函数。我在这里发布了一个示例算法,用于从字符串中生成一个小数:
// 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 );
示例算法说明:
请注意,这只是从字符串生成数字的多种方法的示例。
测试:
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
整数只能存储有限数量的数据,而字符串可能存储的数据远不止这些。如果您将字符串转换为整数,不知何故,它总是会与其他东西发生冲突(用两个词来说,它不是唯一的!)....最好选择其他东西(可能是加盐的 MD5?)!