Jadual Kandungan
回复讨论(解决方案)
Rumah pembangunan bahagian belakang tutorial php php 16进制转为62进制

php 16进制转为62进制

Jun 23, 2016 pm 02:08 PM

62进制按这个排列:

	$dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
Salin selepas log masuk

请高手写个函数 输入16进制,输出62进制,不要用高精度数学函数,服务器禁用了.


回复讨论(解决方案)

五一都出去玩了???

<?php	$dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';	//$num=3844;//intval($_GET['hex'],16);		for($test=0;$test<3844;$test++){		$num=$test;		$index=0;		do{			$cur=$num%62;			$output[$index]=$dict[$cur];			//echo $output[$index].' ';			$num=floor($num/62);			$index++;			//echo $cur.' ';		}while($num);		$output[$index]='!';		$index--;		$aide=0;		while($index>$aide){			$tmp=$output[$index];			$output[$index]=$output[$aide];			$output[$aide]=$tmp;			$aide++;			$index--;		}		$index=0;		while($output[$index]<>'!'){			echo $output[$index];			$index++;		}		if(($test+1)%62==0)			echo '<br />';	}?>
Salin selepas log masuk


我PHP不怎么熟,很多地方都是从C语言的角度去思考的,所以有的地方很别扭。另外我不能保证我写的这个东西没错误,PHP很多地方都很模糊。那个for是为了看看有没有错误的,3位以下的62进制数好像是没什么问题。

另外我不知道怎么把数组弄成字符串,楼主你自己弄去吧,我不想弄了。

还有超出整数的取值范围就会出问题了。如果想实现更大的数的转换,看看这个:
http://www.php.net/manual/en/book.bc.php

还有超出整数的取值范围就会出问题了。如果想实现更大的数的转换,看看这个:
http://www.php.net/manual/en/book.bc.php 你在捣到什么乱?
人家已经说了 不要用高精度数学函数,服务器禁用了


还有超出整数的取值范围就会出问题了。如果想实现更大的数的转换,看看这个:
http://www.php.net/manual/en/book.bc.php 你在捣到什么乱?
人家已经说了 不要用高精度数学函数,服务器禁用了
我忘了,那么几行代码我写了半天,然后我在试大数的时候才发现会出错的。

楼主你要转换的十六进制数会超过整形数据的最大值么?

这个可能不需要BCMath,不过我没试:
http://phpseclib.bantux.org/code_coverage/220/PHP-5.2/Math_BigInteger.php.html

楼主你要转换的十六进制数会超过整形数据的最大值么?

不会的 ,那个16进制数 其实就是一个md5 加密后的结果


楼主你要转换的十六进制数会超过整形数据的最大值么?

不会的 ,那个16进制数 其实就是一个md5 加密后的结果
MD5那么多位怎么可能不超过整形的表示范围?
上面那个链接里的代码好像不能下载,这个可以下载:
http://pear.php.net/package/Math_BigInteger/download

不会的 ,那个16进制数 其实就是一个md5 加密后的结果
那么为什么要是 62 进制呢?64 进制不好吗?
因为你不过只是想紧缩一下 MD5 的结果
测试代码

$c = md5('ffff');echo $c, PHP_EOL;echo $r = convert($c, 64), PHP_EOL;echo convert($r, -64);function convert($s, $to=64) {  $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@=';  $res = '';  $b = '';  if($to > 0) {    $to = ceil(log($to, 2));//调整到2的k次方    for($i=0; $i<strlen($s); $i++) $b .= sprintf('%04b', hexdec($s{$i}));    while(strlen($b) >= $to) {      $res = $dict{bindec(substr($b, -$to))} . $res;      $b = substr($b, 0, -$to);    }    $res = $dict{bindec($b)} . $res;    return $res;  }  $to = ceil(log(-$to, 2));  for($i=0; $i<strlen($s); $i++) $b .= sprintf("%0{$to}b", strpos($dict, $s{$i}));  while(strlen($b) > 4) {    $res = $dict{bindec(substr($b, -4))} . $res;    $b = substr($b, 0, -4);  }  if(bindec($b)) $res = $dict{bindec($b)} . $res;  return $res;}
Salin selepas log masuk
Salin selepas log masuk
ece926d8c0356205276a45266d361161
3IWiroM3ly1itGhipJdx5x
ece926d8c0356205276a45266d361161

太高级了。小老伯路过。不过也学到一个关键词,叫高精度数学。今晚研究下。

好像有函数的,按什么转都行的。


不会的 ,那个16进制数 其实就是一个md5 加密后的结果
那么为什么要是 62 进制呢?64 进制不好吗?
因为你不过只是想紧缩一下 MD5 的结果
测试代码

$c = md5('ffff');echo $c, PHP_EOL;echo $r = convert($c, 64), PHP_EOL;echo convert($r, -64);function convert($s, $to=64) {  $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@=';  $res = '';  $b = '';  if($to > 0) {    $to = ceil(log($to, 2));//调整到2的k次方    for($i=0; $i<strlen($s); $i++) $b .= sprintf('%04b', hexdec($s{$i}));    while(strlen($b) >= $to) {      $res = $dict{bindec(substr($b, -$to))} . $res;      $b = substr($b, 0, -$to);    }    $res = $dict{bindec($b)} . $res;    return $res;  }  $to = ceil(log(-$to, 2));  for($i=0; $i<strlen($s); $i++) $b .= sprintf("%0{$to}b", strpos($dict, $s{$i}));  while(strlen($b) > 4) {    $res = $dict{bindec(substr($b, -4))} . $res;    $b = substr($b, 0, -4);  }  if(bindec($b)) $res = $dict{bindec($b)} . $res;  return $res;}
Salin selepas log masuk
Salin selepas log masuk
ece926d8c0356205276a45266d361161
3IWiroM3ly1itGhipJdx5x
ece926d8c0356205276a45266d361161



其实我是想用16位 md5  做成4位 64进制的短网址,尽管有很大几率些碰撞

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Bagaimanakah sesi merampas kerja dan bagaimana anda dapat mengurangkannya dalam PHP? Bagaimanakah sesi merampas kerja dan bagaimana anda dapat mengurangkannya dalam PHP? Apr 06, 2025 am 12:02 AM

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Apr 03, 2025 am 12:04 AM

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Mar 31, 2025 pm 11:54 PM

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...

Bagaimana cara debug mod CLI dalam phpstorm? Bagaimana cara debug mod CLI dalam phpstorm? Apr 01, 2025 pm 02:57 PM

Bagaimana cara debug mod CLI dalam phpstorm? Semasa membangun dengan PHPStorm, kadang -kadang kita perlu debug PHP dalam mod Interface Line Command (CLI) ...

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Ciri -ciri Keselamatan Rangka Kerja: Melindungi Kelemahan. Ciri -ciri Keselamatan Rangka Kerja: Melindungi Kelemahan. Mar 28, 2025 pm 05:11 PM

Artikel membincangkan ciri -ciri keselamatan penting dalam rangka kerja untuk melindungi daripada kelemahan, termasuk pengesahan input, pengesahan, dan kemas kini tetap.

See all articles