簡體   English   中英

PHP無法計數(二進制十六進制怪異)?

[英]PHP can't count (binary-hex weirdness)?

在Perl中,我的代碼可以正常工作:

print unpack('B*','10071C2');

返回00110001001100000011000000110111001100010100001100110010

使用GMP移植到PHP的代碼:

function gmp_convert($num, $base_a, $base_b)
{
        return gmp_strval ( gmp_init($num, $base_a), $base_b );
}
$test = "10071C2";
$testb=gmp_convert($test, 16, 2);

產生10000000110110001110000101001101111110110001101110000111

我以為這可能是字節順序,但是如果我在Perl中使用b*代替它,它還會產生其他內容:

PHP---10000000110110001110000101001101111110110001101110000111
PERL--10001100000011000000110011101100100011001100001001001100

我根本不明白這一點,有人可以幫忙嗎?

您的Perl和PHP實現完全是分開的。

Perl代碼將每個字符從輸入字符串轉換為該字符的ASCII代碼的二進制表示形式。 例如,第一個字符( "1" )被轉換為"00110001" ,它等於十進制49,即字符1的ASCII碼。

您的PHP代碼成功將以字符串形式表示的十六進制數字轉換為以字符串形式表示的等效二進制表示形式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM