Dosyaları gerçekten ikili formda bilgisayarda depolanan, ancak 1'ler ve 0'lar 8 (adlandırılır bayt) gruplar halinde birlikte saklanır. (Bu bir tesadüf değildi mevcut farklı ASCII karakter sayısı ile denk olur - Şimdi, geleneksel olarak, her bayt çünkü bir bayt temsil edilebilir 256 olası değerler olduğu gerçeği bir ASCII karakteri ile temsil edilebilir ama aslında tasarım).
Söyleniyor, ne geri fread
işlevinden alıyorsanız almak zannediyorsunuz budur: dosyanın içeriğinin yani.
Eğer see the 1s an 0s
you will need to print each byte that your receive into it's base 2 gösterimi istiyorum. Bunu başarmak için böyle base_convert olarak veya kendi yazarak bir işlevi kullanarak.
$filename = "something.mp3";
$handle = fopen($filename, "rb");
$fsize = filesize($filename);
$contents = fread($handle, $fsize);
fclose($handle);
// iterate through each byte in the contents
for($i = 0; $i < $fsize; $i++)
{
// get the current ASCII character representation of the current byte
$asciiCharacter = $contents[$i];
// get the base 10 value of the current characer
$base10value = ord($asciiCharacter);
// now convert that byte from base 10 to base 2 (i.e 01001010...)
$base2representation = base_convert($base10value, 10, 2);
// print the 0s and 1s
echo($base2representation);
}
NOTE
Eğer 1'ler ve 0'lar (bir karakterin baz 2 temsili) bir dize varsa bunu gibi karakteri geri dönüştürebilirsiniz:
$base2string = '01011010';
$base10value = base_convert($base2string, 2, 10); // => 132
$ASCIICharacter = chr($base10value); // => 'Z'
echo($ASCIICharacter); // will print Z