2017-12-28 9 views
2

32 비트 정수 (e.i. 32 숫자)의 배열로 변환하려는 데이터의 1024 비트 길이 이진 스트림이 있습니다. 이 question 가입일 는이 코드 사용했을PHP : 데이터의 이진 스트림에서 32 비트 정수의 압축을 풉니 다.

$filename = "myFile.sav"; 
$handle = fopen($filename, "rb"); 
$fsize = filesize($filename); 
$contents = fread($handle, $fsize); 
$byteArray = unpack("N*",$contents); 
print_r($byteArray); 

하고는 "N"자체를 포맷에도 위해서 var_dump 256은 8 비트 길이의 정수 배열을 출력한다. (나는 32 개의 32 비트 긴 숫자를 원한다.) 내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집 : 그것의 실제로 256 8 비트 숫자 만 256 횡설수설는

답변

1

당신의 파일이 정수의 이진 표현이 포함되어 것으로 보인다 값. string 비트 표현이 주어지면 bindec 함수는이를 integer으로 올바르게 변환합니다.

$content = "1000110010110110100100101011000100100000101011010101101110101101011101110011001110010010111101001011111000111000101110011110011100110110000111001110000011001101011100111011110000001110111100100110110001000111111001010101100011100101010111000011010101010010001101101100011001101110001001000101110111011001001101111000110101010001101010000101110000100010000110110111000110001110000010000111001100100111110011000101000110100011111100100011110100101010101101011011101100111000101011110111111010001110000011101001011101111010101010011010011010011101100011111111000110000110000000000101110110010100010011010001110101101100110110001011010010010000011000111101110000100100001101100010101011000110010110110111100111010010101110000101011101010010101110100111100111110011000100001010111110010001010100001010001011101101110010011001010000101011110101100001100001111011101010100001001101100100110001101000000110111000111001100001000110000011011100000100011100100110101101000101111011110001100110010001111111010101110111111010110010111001"; 

$parts = str_split($content, 32); 

for ($i = 0; $i < count($parts); ++$i) { 
    $parts[$i] = bindec($parts[$i]); 
} 

print_r($parts); 
관련 문제