2009-05-08 32 views

Trả lời

4

Tôi nghĩ rằng bạn đang yêu cầu tương đương với các gói Perl/chức năng giải nén. Nếu đúng như vậy, tôi đề nghị bạn nhìn vào các gói PHP/chức năng giải nén:

+0

Đây chính xác là những gì tôi đang tìm kiếm. –

1

Không có thứ gì như một mảng nhị phân trong PHP. Tất cả các hàm yêu cầu luồng byte hoạt động trên chuỗi. Chính xác thì bạn muốn làm gì?

1

Nếu bạn đang cố truy cập một phần cụ thể của chuỗi, bạn có thể coi nó như một mảng.

$foo = 'bar'; 
echo $foo[0]; 

đầu ra: b

+2

Đối với loại này tiếp cận chuỗi, tôi tin rằng ký hiệu dấu ngoặc nhọn là một lợi thế (nếu không bạn có nguy cơ gây nhầm lẫn địa ngục ra khỏi bất cứ ai khác duy trì mã của bạn). Ví dụ: $ foo {0} – EvanK

+1

Trừ khi tôi bị nhầm lẫn, Ký hiệu dấu ngoặc nhọn cho điều này sẽ không được chấp nhận trong PHP 6 – McAden

+1

Ah, tại đây là: http://us.php.net/language.types.string "Lưu ý" dưới tiêu đề - "Truy cập chuỗi và sửa đổi theo ký tự" – McAden

1

Hãy nói rằng bạn muốn chuyển đổi $ stringA = "Xin chào" với nhị phân .

Đầu tiên lấy ký tự đầu tiên bằng hàm ord(). Điều này sẽ cung cấp cho bạn giá trị ASCII của ký tự thập phân. Trong trường hợp này là 72.

Bây giờ chuyển đổi nó thành nhị phân với hàm dec2bin(). Sau đó, hãy thực hiện chức năng tiếp theo. Bạn có thể tìm thấy các chức năng này hoạt động như thế nào tại http://www.php.net.

HOẶC sử dụng đoạn mã này:

<?php 
    // Call the function like this: asc2bin("text to convert"); 
    function asc2bin($string) 
    { 
     $result = ''; 
     $len = strlen($string); 
     for ($i = 0; $i < $len; $i++) 
     { 
      $result .= sprintf("%08b", ord($string{$i})); 
     } 
     return $result; 
    } 

    // If you want to test it remove the comments 
    //$test=asc2bin("Hello world"); 
    //echo "Hello world ascii2bin conversion =".$test."<br/>"; 
    //call the function like this: bin2ascii($variableWhoHoldsTheBinary) 
    function bin2ascii($bin) 
    { 
     $result = ''; 
     $len = strlen($bin); 
     for ($i = 0; $i < $len; $i += 8) 
     { 
      $result .= chr(bindec(substr($bin, $i, 8))); 
     } 
     return $result; 
    } 
    // If you want to test it remove the comments 
    //$backAgain=bin2ascii($test); 
    //echo "Back again with bin2ascii() =".$backAgain; 
?> 
Các vấn đề liên quan