Jak zakodować tekst w systemie szesnastkowym? (Hex, Hexadecimal)
piechnat
Do zakodowania posłużymy się funkcjami:
-
ord()
- zwraca kod ascii podanego znaku -
dechex()
- zmienia zapis liczby z systemu dziesiętnego na szesnastkowy -
str_pad()
- dopełnia string jakąś sekwencją znaków do podanej długości
Tej ostatniej użyjemy aby liczba w systemie heksadecymalnym zapisana była zawsze za pomocą dwóch znaków.
Do odkodowania wykorzystamy funkcję odwrotnie działającą do ord()
, czyli chr()
oraz analogicznie w przypadku dechex()
funkcję hexdec()
.
function koduj ( $str ) {
$temp = '';
for ( $i = 0; $i < strlen( $str ); $i++) {
$temp = ord( $str[$i] );
$temp = dechex( $temp );
$temp = str_pad( $temp, 2, '0', STR_PAD_LEFT );
$result .= $temp;
}
return $result;
}
function dekoduj ( $str ) {
$temp = '';
for ( $i = 0; $i < strlen( $str ); $i = $i + 2 ) {
$temp = $str[$i] . $str[$i+1];
$temp = hexdec( $temp );
$temp = chr( $temp );
$result .= $temp;
}
return $result;
}
Użycie:
$tekst = 'Litwo !!! ojczyzno moja :-)';
$zakodowany_tekst = koduj( $tekst );
$odkodowany_tekst = dekoduj( $zakodowany_tekst );
echo $tekst . '<br>';
echo $zakodowany_tekst . '<br>';
echo $odkodowany_tekst;
ASCII to kod :P
system szesnastkowy też :)
WOW normalnie odkrycie... nie do złamania