PHP Classes

PHP Bit String: Manipulate strings of sequences of binary digits

Recommend this page to a friend!
  Info   View files Example   View files View files (5)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not enough user ratingsTotal: 101 All time: 9,717 This week: 148Up
Version License PHP version Categories
bitstring 1.0BSD License5.6PHP 5, Text processing, Data types
Description 

Author

This class can manipulate strings of sequences of binary digits.

It can take a string of data or binary digits and create an internal array of data.

The class can convert the bits to hexadecimal, to binary data, or a string of binary digits.

It also provide an iterator interface so it can be treated as an array of bits using the regular array manipulation functions.

Picture of Christian Vigh
  Performance   Level  
Name: Christian Vigh <contact>
Classes: 32 packages by
Country: France France
Age: 57
All time rank: 13810 in France France
Week rank: 10 Up1 in France France Up
Innovation award
Innovation award
Nominee: 20x

Winner: 3x

Example

<?php
   
/*************************************************************************************************

        This example demonstrates the use of the BitString and BitStringIterator classes on a
        simple example string, "ABCDEF", which will be considered as a string of bits.

     *************************************************************************************************/

   
require_once ( 'BitString.phpclass' ) ;

    if (
php_sapi_name ( ) != 'cli' )
        echo
'<pre>' ;

   
// getbits -
    // This function simply outputs bits from the specified value, up to $count.
   
function getbits ( $value, $count )
       {
       
$result = '' ;

        for (
$i = 0 ; $i < $count ; $i ++, $value >>= 1 )
           
$result .= ( $value & 1 ) ? '1' : '0' ;

        return (
$result ) ;
        }

   
// Our example string
   
$data = "ABCDEF" ;

   
// Create a bit string from it
   
$bs = new BitString ( $data ) ;

   
// Try the ToHex() and ToBin() functions. Note that ToBin (0) will print the bits in exactly the same order
    // as they are stored (least significant bit first), while ToBin(1) will print them in the order they are
    // printed by ToHex()
   
echo "ToHex() : " ; print_r ( $bs -> ToHex ( ) ) ; echo "\n" ;
    echo
"ToBin(1) : " ; print_r ( $bs -> ToBin ( 1 ) ) ; echo "\n" ;
    echo
"ToBin(0) : " ; print_r ( $bs -> ToBin ( 0 ) ) ; echo "\n" ;

   
// Use the ArrayAccess interface to retrieve and display each individual bit
   
echo "Bit per bit (for) : " ;

    for (
$i = 0 ; $i < count ( $bs ) ; $i ++ )
        echo
$bs [$i] ;

   
// Use the Iterator interface to display each individual bit
   
echo "\nBit per bit (foreach) : " ;

    foreach (
$bs as $bit )
        echo
$bit ;

   
// Now, use the BitString::GetBits() function to display bits by group of x bits, from 1 to 32.
    // Note that the getbits() function defined here will add trailing zeroes for bit counts that are
    // not a denominator of the machine's word size - this is not a bug, this inconvenience was aimed
    // at making this example simpler
   
for ( $bit_count = 1 ; $bit_count <= 32 ; $bit_count ++ )
       {
        echo
sprintf ( "\nTaking by %2d bits : ", $bit_count ) ;
       
        for (
$i = 0 ; $i < count ( $bs ) ; $i += $bit_count )
           {
           
$value = $bs -> GetBits ( $i, $bit_count ) ;

            if (
$value === false )
               
output ( "FALSE for offset $i, count $bit_count" ) ;

            echo
getbits ( $value, $bit_count ) ;
            }
        }

   
// Now use a BitStringIterator object : extract bits from the bit string by groups of
    // 3 components having 8 bits each. It should display the hexadecimal translation of
    // "ABCDEF" which is : "414243444546"
   
echo "\nBitStringIterator(8,3) : " ;

    foreach ( new
BitStringIterator ( $bs, 8, 3 ) as $values )
       {
        foreach (
$values as $value )
            echo (
sprintf ( "%02X", $value ) ) ;
        }


  Files folder image Files  
File Role Description
Plain text file BitString.phpclass Class Class source
Accessible without login Plain text file example.php Example Example script
Accessible without login Plain text file LICENSE Lic. License text
Accessible without login Plain text file NOTICE Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation

 Version Control Unique User Downloads Download Rankings  
 100%
Total:101
This week:0
All time:9,717
This week:148Up