bin2hex — Преобразует бинарные данные в шестнадцатиричное представление


Содержание

bin2hex

(PHP 4, PHP 5, PHP 7)

bin2hex — Преобразует бинарные данные в шестнадцатеричное представление

Описание

Возвращает ASCII-строку, содержащую шестнадцатеричное представление аргумента str . Преобразование производится побайтно, начиная с верхнего полубайта.

Список параметров

Возвращаемые значения

Возвращает шестнадцатеричное представление указанной строки.

Смотрите также

  • hex2bin() — Преобразует шестнадцатеричные данные в двоичные
  • pack() — Упаковать данные в бинарную строку

hex2bin

hex2bin — Преобразует шестнадцатеричные данные в двоичные

Описание

Декодирует строку данных из шестнадцатеричного представления

Эта функция НЕ конвертирует шестнадцатиричные числа в двоичные. Если нужно именно это, используйте функцию base_convert() .

Список параметров

Шестнадцатеричное представление данных.

Возвращаемые значения

Возвращает двоичное представление данных, или FALSE в случае возникновения ошибки.


Ошибки

Если во входной шестнадцатиричной строке окажется нечетное число байт, будет выдано предупреждение E_WARNING .

Список изменений

Версия Описание
5.4.1 Если строка имеет нечетную длину, выбрасывается предупреждение. ВPHP 5.4.0 такая строка принималась, а последний байт просто обрезался.

Примеры

Пример #1 Пример использования hex2bin()

Результатом выполнения данного примера будет что-то подобное:

Смотрите также

  • bin2hex() — Преобразует бинарные данные в шестнадцатиричное представление
  • unpack() — Распаковывает данные из бинарной строки

Как преобразовать шестнадцатеричное представление данных в двоичные данные в PHP?

Я знаком с php-функцией bin2hex() для преобразования двоичных данных в шестнадцатеричное представление.

Однако какова функция дополнения для преобразования шестнадцатеричного представления данных обратно в двоичные данные?

Как мне вернуться к приветствию?

Нет функции hex2bin() .

3 ответа

15 Решение Tony Miller [2010-04-08 22:36:00]

Если вы посмотрите страницу PHP bin2hex, там предлагаются решения, включая этот:

Существуют также различные реализации hex2bin, которые вы можете выбрать.

5 Weston C [2010-04-08 22:38:00]


Для тех, у кого есть PHP 5.4 и выше, есть стандартный способ сделать это:

bin2hex

(PHP 4, PHP 5, PHP 7)

bin2hex — Преобразует бинарные данные в шестнадцатеричное представление

Описание

Возвращает ASCII-строку, содержащую шестнадцатеричное представление аргумента str . Преобразование производится побайтно, начиная с верхнего полубайта.

Список параметров

Возвращаемые значения

Возвращает шестнадцатеричное представление указанной строки.

Смотрите также

  • hex2bin() — Преобразует шестнадцатеричные данные в двоичные
  • pack() — Упаковывает данные в бинарную строку

Как преобразовать шестнадцатеричное представление данных в двоичные данные в PHP?

Я знаком с функцией php bin2hex() для преобразования двоичных данных в шестнадцатеричное представление.

Однако что такое функция дополнения для преобразования шестнадцатеричного представления данных обратно в двоичные данные?

Как превратить его обратно привет?

Нет hex2bin() функция.

Создан 08 апр. 10 2010-04-08 19:29:18 Marcus Adams

3 ответа

Если посмотреть на PHP’s bin2hex page, там предлагаемые решения, включая этот:


Там также различные реализации HEX2BIN, которые вы можете выбрать.

Создан 08 апр. 10 2010-04-08 19:36:15 Tony Miller

@Tony, вы выбрали одно из предлагаемых решений наугад, или это стандартное для использования? – Marcus Adams 10 апр. 10 2010-04-10 09:41:06

Это решение показалось коротким, элегантным и применимым ко всем версиям PHP. Я не могу сказать, если это канонический стандарт, который нужно использовать, в отличие от некоторых других функций, предоставляемых отправителями документации PHP. – Tony Miller 10 апр. 10 2010-04-10 14:54:11

bin2hex

bin2hex — Преобразует бинарные данные в шестнадцатиричное представление

Описание

Возвращает ASCII-строку, содержащую шестнадцатиричное представление аргумента str . Преобразование производится побайтно, начиная с верхнего полубайта.

Список параметров

Возвращаемые значения

Возвращает шестнадцатиричное представление указанной строки.

Смотрите также

  • hex2bin() — Преобразует шестнадцатеричные данные в двоичные
  • pack() — Упаковывает данные в бинарную строку

Коментарии

In an attempt to dodge spam bots I’ve seen people (including myself) hex encode their email addresses in «mailto» tags. This is the small chunk of code I wrote to automate the process:

function hex_encode ( $email_address ) <
$encoded = bin2hex ( «$email_address» );
$encoded = chunk_split ( $encoded , 2 , ‘%’ );
$encoded = ‘%’ . substr ( $encoded , 0 , strlen ( $encoded ) — 1 );
return $encoded ;
>
?>

so for example:
«>email me

would produce the following address:
%70%65%64%72%61%6d%40%72%65%64%68%69%76%65%2e%63%6f%6d

I was just browsing the above and with a little modification,
came up with the following which I believe to be more flexible:

function bin2hex ( $data ) <
$corrected = ereg_replace ( «[^0-9a-fA-F]» , «» , $data );
return pack ( «H» . strlen ( $corrected ), $corrected );
>
?>

This will make sure that whatever you pass, even if it is padded
at the extremeties or between pairs, should return the desired data.


Hopefully this helps someone.

It just displays an html representation of hex data, much like a hex viewer would.

function hexview ( $data ) <
$bytePosition = $columnCount = $lineCount = 0 ;
$columns = 8 ;
$dataLength = strlen ( $data );
$return = array();
$return [] = ‘

‘ ;
for( $n = 0 ; $n $dataLength ; $n ++) <
$lines [ $lineCount ][ $columnCount ++] = substr ( $data , $n , 1 );
if( $columnCount == $columns ) <
$lineCount ++;
$columnCount = 0 ;
>
>
foreach( $lines as $line ) <
$return [] = ‘

‘ ;
for( $n = 0 ; $n $columns ; $n ++) <
$return [] = ‘

‘ ;
>
$return [] = ‘ ‘ ;
for( $n = 0 ; $n $columns ; $n ++) <
$return [] = ‘

‘ ;
>
$return [] = ‘

‘ ;
$bytePosition = $bytePosition + $columns ;
>
$return [] = ‘

‘ . $bytePosition . ‘: ‘ . strtoupper ( bin2hex ( $line [ $n ])). ‘ ‘ .( htmlentities ( $line [ $n ]) ? htmlentities ( $line [ $n ]) : ‘ ‘ ). ‘

‘ ;
return implode ( » , $return );
>
?>

This function undoes it (converts back into ASCII).

function hex2asc ( $myin ) <
for ( $i = 0 ; $i strlen ( $myin )/ 2 ; $i ++) <
$myout .= chr ( base_convert ( substr ( $myin , $i * 2 , 2 ), 16 , 10 ));
>
return $myout ;
>
?>

Some gave a function to convert a hex code back into a simple text (human readable ASCII :P)

Some else gave a function that makes use of bin2hex to convert URLs into something like %12%34%56

Here is a function to go from the form %12%34%56 back into ASCII

Note that this function can easily be changed in order to transform any hex code into ASCII

function _hex2text ( $str ) <
$str = explode ( ‘%’ , $str );
array_shift ( $str );
$nmlstr = » ;
foreach( $str as $hexstr ) <
$nmlstr .= chr ( base_convert ( $hexstr , 16 , 10 ));
>
return $nmlstr ;
>
?>

‘hope this helps :)
Regards
-Tsuna

function to search a character in a normal string change this for a hexadecimal and take the especifical char code in hexa and replace this char and return the string

function hex_replace ( $pCaracter , $sCaracter , $conteudo ) <

$pHex = bin2hex ( $pCaracter );
$sHex = bin2hex ( $sCaracter );

$tam = strlen ( $conteudo );

for( $i = 0 ; $i $tam ; $i ++) <
$cont = bin2hex ( substr ( $conteudo , $i , 1 ));

if ( $cont == $pHex ) <
$cont = $sHex ;
$hex .= $cont ;
>
>

for ( $i = 0 ; $i strlen ( $hex ); $i += 2 )
$bin .= chr ( hexdec ( substr ( $hex , $i , 2 )));
return $bin ;
>
?>

by from a litle brazilian. :-P

I thought it’ll give me an «F» if i give it a «1111».

Here’s something to convert a binary-string into a hex-string and other direction too:

function hexbin ( $hex ) <
$bin = decbin ( hexdec ( $hex ));
return $bin ;
>


function binhex ( $bin ) <
$hex = dechex ( bindec ( $bin ));
return $hex ;
>
?>

simple, isn’t it?

Ok, this is a better version than my previous poor example.

Running this in shell creates a progress indicator. Very useful if used when parsing large log files for instance.

#!/usr/bin/php4 -q
// Displays a progress indicator
function progress ( $line )
<
global $last_len ;

$del_char = pack ( «H» . 2 , «7F» );
$line_len = strlen ( $line );
$del_chars =(isset( $last_len )) ? $last_len : $line_len ;

$last_len = $line_len ;
return str_repeat ( $del_char , ( $del_chars )). $line ;
>

// demo code:
for( $i = 0 ; $i 100 ; $i ++)
<
sleep ( 1 );
echo progress ( «i is now: $i out of 100» );
>
?>

I needed a little function that will print the binary as a string, here it comes.

function bin2string ( $bin ) <
$res = «» ;
for( $p = 31 ; $p >= 0 ; $p —) <
$res .= ( $bin & ( 1 $p )) ? «1» : «0» ;
>
return $res ;
>
?>

Here’s a modified version of an earlier post (asc2bin and bin2asc) to convert an incoming ascii string to hex and out again. For example, this is really useful if you want to insert data into a mySQL database which contains both escaped and non-escaped characters. For example, if you want to store code snibbets in a mySQL text field:

printf(«here’s some \»text\».»);

If you INSERT this into mySQL, it probably won’t come out in friendly executable format, and you can’t escape all double-quotes, nor can you strip out all the slashes. One solution is to just convert the string to hex, store it in hex, then convert back to ascii before using it in some way:

function asc2hex ($temp) <
$len = strlen($temp);
for ($i=0; $i

modified version of Thoth’s hexbin and binhex to convert
any size numbers
(original doesn’t take more than integer — 32bit)
function hexbin ( $hex ) <
$bin = » ;
for( $i = 0 ; $i strlen ( $hex ); $i ++)
$bin .= str_pad ( decbin ( hexdec ( $hex < $i >)), 4 , ‘0’ , STR_PAD_LEFT );
return $bin ;
>

function binhex ( $bin ) <
$hex = » ;
for( $i = strlen ( $bin )- 4 ; $i >= 0 ; $i -= 4 )
$hex .= dechex ( bindec ( substr ( $bin , $i , 4 )));
return strrev ( $hex );
>
?>

A good option for creating strings with binary data for saving (for example saving an sql statement to a file) into text files or php code is to do the following:

= bin2hex ( $field );
$field = chunk_split ( $field , 2 , «\\x» );
$field = «\\x» . substr ( $field , 0 ,- 2 );
?>

this will convert your field (binary or not) into hex and then convert the hex into a string which may be placed in a php file:

This function returns the string $str in htmlentity hex format (&#xnumber;).
It is useful to prevent spam bots indexing your email adress.

function hexentities ( $str ) <
$return = » ;
for( $i = 0 ; $i strlen ( $str ); $i ++) <
$return .= ‘&#x’ . bin2hex ( substr ( $str , $i , 1 )). ‘;’ ;
>
return $return ;
>

the browser will show foo@bar.


This function is for converting binary data into a hexadecimal string representation. This function is not for converting strings representing binary digits into hexadecimal. If you want that functionality, you can simply do this:

= «11111001» ;
$hex = dechex ( bindec ( $binary ));
echo $hex ;
?>

This would output «f9». Just remember that there is a very big difference between binary data and a string representation of binary.

hex2bin can be useful to insert data into BLOB binary fields.

for example if you want to insert the content of a file :

= ‘/foo/bar’ ;
$bin_content = fread ( fopen ( $filename , «r» ), filesize ( $filename ));

// use the usual mysql_connect() function

$insert_query = «INSERT INTO mytable (blob_field) VALUES (‘» . bin2hex ( $bin_content ). «‘)» ;
mysql_query ( $insert_query );

Because the way back (hex2bin) doesn’t exist on php, i’ve written another little function without using commands like pack:

// Convert a hex-string to binary-string (the way back from bin2hex)

function hex2bin ( $h )
<
if (! is_string ( $h )) return null ;
$r = » ;
for ( $a = 0 ; $a strlen ( $h ); $a += 2 ) < $r .= chr ( hexdec ( $h < $a >. $h <( $a + 1 )>)); >
return $r ;
>

echo bin2hex ( ‘Hello’ ); // result: 48656c6c6f
echo hex2bin ( ‘48656c6c6f’ ); // result: Hello
?>

Regarding the fabled hex2bin, the easiest way I’ve found to «replace» it is the following call to function pack():

Here’s a function to check if a string contains any 7-bit GSM characters.

It might come useful for people working on SMS platforms.

function check_gsm ( $str )
<
$arr = array(
«0x00» , «0x01» , «0x02» , «0x03» , «0x04» , «0x05» , «0x06» , «0x07» , «0x08» , «0x09» ,
«0x0A» , «0x0B» , «0x0C» , «0x0D» , «0x0E» , «0x0F» , «0x10» , «0x11» , «0x12» , «0x13» ,
«0x14» , «0x15» , «0x16» , «0x17» , «0x18» , «0x19» , «0x1A» , «0x1B» , «0x1B0A» ,
«0x1B14» , «0x1B28» , «0x1B29» , «0x1B2F» , «0x1B3C» , «0x1B3D» , «0x1B3E» ,
«0x1B40» , «0x1B65» , «0x1C» , «0x1D» , «0x1E» , «0x1F» , «0x20» , «0x21» , «0x22» ,
«0x23» , «0x24» , «0x25» , «0x26» , «0x27» , «0x28» , «0x29» , «0x2A» , «0x2B» , «0x2C» ,
«0x2D» , «0x2E» , «0x2F» , «0x30» , «0x31» , «0x32» , «0x33» , «0x34» , «0x35» , «0x36» ,
«0x37» , «0x38» , «0x39» , «0x3A» , «0x3B» , «0x3C» , «0x3D» , «0x3E» , «0x3F» , «0x40» ,
«0x41» , «0x42» , «0x43» , «0x44» , «0x45» , «0x46» , «0x47» , «0x48» , «0x49» , «0x4A» ,
«0x4B» , «0x4C» , «0x4D» , «0x4E» , «0x4F» , «0x50» , «0x51» , «0x52» , «0x53» , «0x54» ,
«0x55» , «0x56» , «0x57» , «0x58» , «0x59» , «0x5A» , «0x5B» , «0x5C» , «0x5D» , «0x5E» ,
«0x5F» , «0x60» , «0x61» , «0x62» , «0x63» , «0x64» , «0x65» , «0x66» , «0x67» , «0x68» ,
«0x69» , «0x6A» , «0x6B» , «0x6C» , «0x6D» , «0x6E» , «0x6F» , «0x70» , «0x71» , «0x72» ,
«0x73» , «0x74» , «0x75» , «0x76» , «0x77» , «0x78» , «0x79» , «0x7A» , «0x7B» , «0x7C» ,
«0x7D» , «0x7E» , «0x7F» );

$strl = strlen ( $str );
for ( $i = 0 ; $i $strl ; $i ++)
<
$char = ‘0x’ . bin2hex ( substr ( $str , $i , 1 ));
$pos = in_array ( $char , $arr );
if ( $pos == 1 )
<
$j ++;
>
>

Postgresql return result in bytea so don’t forget to convert_from

= «SELECT convert_from(decode(‘» . bin2hex ( ‘hex encoded string’ ) . «‘, ‘hex’),’UTF8′)» ;
?>

Convenient way of generating API keys

= bin2hex ( random_bytes ( 32 )); // generates 64 characters long string /^[0-9a-f]<64>$/
?>


Как преобразовать шестнадцатеричное представление данных в двоичные данные в PHP?

Я знаком с функцией РНР bin2hex() для преобразования двоичных данных в шестнадцатеричное представление.

Однако то, что функция дополняет преобразовать шестнадцатеричное представление данных обратно в двоичные данные?

Как превратить его обратно привет?

Там нет hex2bin() функции.

Если вы смотрите на странице BIN2HEX РНР , там предлагаются решения , включая этот:

Там также различные реализации HEX2BIN, которые вы можете выбрать.

Для тех, у кого есть PHP 5.4 и выше, есть стандартный способ сделать это:

Двоичная восьмеричная шестнадцатеричная системы счисления

Двоичная система счисления

Для представления чисел в микропроцессоре используется двоичная система счисления .
При этом любой цифровой сигнал может иметь два устойчивых состояния: «высокий уровень» и «низкий уровень». В двоичной системе счисления для изображения любого числа используются две цифры, соответственно: 0 и 1. Произвольное число x=anan-1..a1a,a-1a-2…a-m запишется в двоичной системе счисления как

где ai — двоичные цифры (0 или 1).

Восьмеричная система счисления

В восьмеричной системе счисления базисными цифрами являются цифры от 0 до 7. 8 единиц младшего разряда объединяются в единицу старшего.

Шестнадцатеричная система счисления

В шестнадцатеричной системе счисления базисными цифрами являются цифры от 0 до 15 включительно. Для обозначения базисных цифр больше 9 одним символом кроме арабских цифр 0…9 в шестнадцатеричной системе счисления используются буквы латинского алфавита:

Например, число 17510 в шестнадцатеричной системе счисления запишется как AF16. Действительно,

10·16 1 +15·16 0 =160+15=175

В таблице представлены числа от 0 до 16 в десятичной, двоичной, восьмеричной и шестнадцатеричной системах счисления.

Десятичная Двоичная Восьмеричная Шестнадцатеричная
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10


Двоично-восьмеричные и двоично-шестнадцатеричные преобразования

Двоичная система счисления удобна для выполнения арифметических действий аппаратными средствами микропроцессора, но неудобна для восприятия человеком, поскольку требует большого количества разрядов. Поэтому в вычислительной технике помимо двоичной системы счисления широкое применение нашли восьмеричная и шестнадцатеричная системы счисления для более компактного представления чисел.

Три разряда восьмеричной системы счисления реализуют все возможные комбинации восьмеричных цифр в двоичной системе счисления: от 0 (000) до 7(111). Чтобы преобразовать двоичное число в восьмеричное, нужно объединить двоичные цифры в группы по 3 разряда (триады) в две стороны, начиная от разделителя целой и дробной части. При необходимости слева от исходного числа нужно добавить незначащие нули. Если число содержит дробную часть, то справа от него тоже можно добавить незначащие нули до заполнения всех триад. Затем каждая триада заменяется восьмеричной цифрой.

Пример: Преобразовать число 1101110,012 в восьмеричную систему счисления.

Объединяем двоичные цифры в триады справа налево. Получаем

Чтобы перевести число из восьмеричной системы в двоичную, нужно каждую восьмеричную цифру записать ее двоичным кодом:

Четыре разряда шестнадцатеричной системы счисления реализуют все возможные комбинации шестнадцатеричных цифр в двоичной системе счисления: от 0 (0000) до F(1111). Чтобы преобразовать двоичное число в шестнадцатеричное, нужно объединить двоичные цифры в группы по 4 разряда (тетрады) в две стороны, начиная от разделителя целой и дробной части. При необходимости слева от исходного числа нужно добавить незначащие нули. Если число содержит дробную часть, то справа от нее тоже нужно добавить незначащие нули до заполнения всех тетрад. Затем каждая тетрада заменяется шестнадцатеричной цифрой.

Пример: Преобразовать число 1101110,112 в шестнадцатеричную систему счисления.

Объединяем двоичные цифры в тетрады справа налево. Получаем

Чтобы перевести число из шестнадцатеричной системы в двоичную, нужно каждую шестнадцатеричную цифру записать ее двоичным кодом:

hex2bin — Преобразует шестнадцатеричные данные в двоичные

hex2bin — Преобразует шестнадцатеричные данные в двоичные

Описание

Декодирует строку данных из шестнадцатеричного представления

Эта функция НЕ конвертирует шестнадцатеричные числа в двоичные. Если нужно именно это, используйте функцию base_convert() .

Список параметров

Шестнадцатеричное представление данных.

Возвращаемые значения

Возвращает двоичное представление данных, или FALSE в случае возникновения ошибки.

Ошибки


Если во входной шестнадцатеричной строке окажется нечетное число байт или она не является правильной шестнадцатеричной строкой, будет выдано предупреждение E_WARNING .

Список изменений

Версия Описание
5.5.1 Если входная строка не является правильной шестнадцатеричной строкой, то будет выброшено предупреждение.
5.4.4 Если строка имеет нечетную длину, выбрасывается предупреждение. В PHP 5.4.0 такая строка принималась, а последний байт просто обрезался.

Примеры

Пример #1 Пример использования hex2bin()

Результатом выполнения данного примера будет что-то подобное:

Смотрите также

  • bin2hex() — Преобразует бинарные данные в шестнадцатеричное представление
  • unpack() — Распаковывает данные из бинарной строки

bin2hex — Преобразует бинарные данные в шестнадцатеричное представление

(PHP 4, PHP 5, PHP 7)

bin2hex — Преобразует бинарные данные в шестнадцатеричное представление

Описание

Возвращает ASCII-строку, содержащую шестнадцатеричное представление аргумента str . Преобразование производится побайтно, начиная с верхнего полубайта.

Список параметров

Возвращаемые значения

Возвращает шестнадцатеричное представление указанной строки.

Смотрите также

  • hex2bin() — Преобразует шестнадцатеричные данные в двоичные
  • pack() — Упаковывает данные в бинарную строку
Илон Маск рекомендует:  Что такое код bccomp
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL