簡單但令人費解的問題:如何將十六進制id轉換爲0-100之間的數字?
說我有一個字符串「516e965a8fe4b」。我希望它成爲0-100的數字。由於有像這樣的字母數字散列有100多種可能性,所以重疊很好。
我該如何去實施?
簡單但令人費解的問題:如何將十六進制id轉換爲0-100之間的數字?
說我有一個字符串「516e965a8fe4b」。我希望它成爲0-100的數字。由於有像這樣的字母數字散列有100多種可能性,所以重疊很好。
我該如何去實施?
我很想知道你爲什麼要這樣做。無論如何,這是我將如何做到這一點。
然後製作一個MOD 101的數字。 (Modulus)
ID =薩姆%101
+1爲'我想知道你爲什麼要這樣'。 –
它是那些深夜編程的東西之一...... –
如果你必須知道,我想要一組現有的ID與100個東西的列表匹配,沒有特定的順序。涉及酒精。看起來這個問題在這裏招待客人:) –
使用這樣的事情。添加的數字的十六進制值和MOD它至100:
function findNumber($hash) {
$sum=0;
for($i=0;$i<length($hash);$i++) {
$sum+=hexdec($hash[$i]);
}
return $sum%100;
}
function getNumber($string){
$value = 0;
for ($i=0; $i < strlen($string); $i++)
$value += hexdec($string[$i]);
$value = (int)($value/((strlen($string)+.001)*15/100));
return $value;
}
花了太多時間寫出來。看起來很像FloatingRock的答案。 –
好,我有一個替代的方法,其比其他更加安全,因爲其結果不能直接由輸入確定。
function getNumber($hex, $min, $max){
srand(hexdec($num));
return rand($min, $max);
}
你必須(在你的情況下,分別爲0和100)$ min和$ max之間一個數,這將是永遠每次你用相同的投入(這是確定的,即使運行該功能時同樣它使用隨機功能!)
'rand()'不像javascript那樣返回0和1之間的浮點數,但返回$ min和$ max之間的int值。嘗試改成'rand($ min,$ max);'。見http://nl3.php.net/manual/en/function.rand –
@ nl-x謝謝XD我並不是想把這個作爲答案,但我會去找盧爾茲:P –
請解釋你的問題更多。如果你向我們展示你已經嘗試過的東西,那它就不會受到傷害,爲什麼這不適合你的需求 –
你可以f.e.將單個字符的ASCII字符代碼相加,然後將其取爲100(或101,如果要將100包括爲可能的值)。無論是否導致值的平均分配,是你要弄清楚;-) – CBroe
嘿,你可以先用['hexdec'](http://php.net/hexdec)將它轉換爲int並且然後應用[modulo](http://php.net/modulo)函數。 –