2013-05-26 2 views
4

Мне было интересно, есть ли простой способ отобразить 8 бит байта (или char) в PHP.Показать 8 бит байта в PHP

Например для ASCII кодирующего символ '0' должен вернуть 0011 0000

Спасибо за ваш вклад!

+0

сочетание Ord() - для персонажей - и decbin() –

+1

@MarkBaker decbin, DecHex для шестнадцатеричных данных ... – bwoebi

+0

@bwoebi - уже исправлена ​​благодаря –

ответ

11

Это должно сделать работу:

$bin = decbin(ord($char)); 
$bin = str_pad($bin, 8, 0, STR_PAD_LEFT); 
+0

Это работает прекрасно, именно то, что мне было нужно. Благодаря! Функция обработки всей строки, которую кто-то опубликовал и удалил, тоже был приятным. –

+0

Рад это услышать :) Не могли бы вы пометить его как ответ, если вы считаете, что это так :) – Farkie

+0

Мне пришлось немного подождать;) –

4

Вы можете использовать bitwise operators for that

$a='C'; 
for ($i=0; $i<8; $i++) { 
    var_dump((ord($a) & (1<<$i))>>$i); 
} 

Выход:

int(1) 
int(1) 
int(0) 
int(0) 
int(0) 
int(0) 
int(1) 
int(0) 
+2

+1 чисто для придумывания альтернативы decbin() –

3

Еще одно решение, это включает в себя пространство между 4-х цифр:

$char = 0; 
echo chunk_split(sprintf('%08b', ord($char)), 4, ' '); 
+0

очень хорошее решение тоже. Благодаря! –

+0

классный и элегантный –

Смежные вопросы