X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Битовые операции
Wins
Wins
Topic Starter сообщение 9.10.2015, 16:34; Ответить: Wins
Сообщение #1


Битовые операции

есть данные которые нужно преобразовать обратно в биты
например 04060300 которое содержится в $value->bit
короче
[PHP]$value->bit = 04060300[/PHP]
и его нужно преобразовть в биты
но перед этим его нужно конвертнуть,
для этого в пхп есть только 2 функции
[PHP]base_convert($value->bit,16,10);
//или
hexdec($value->bit);
//результат тот же[/PHP]

потом пошли сдвиги бит и отображение установленных бит

фигня в том что биты правильно отображаются только до 64, больше эти функции не поддерживают
и все числа что после 64 выводятся не верно.

что можно с этим сделать? писать свою функцию для конвертации или может уже существуют готовые решения?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 9.10.2015, 19:03; Ответить: Degradator
Сообщение #2


base_convert нормально работает, только надо разобраться что оно принимает как аргументы. Например:

$value->bit = '04060300';
echo base_convert($value->bit,8,10);//1073344

Да, число которое начинается с 0 имеет в основании 8 а не 16, поэтому fromBase = 8 а не 16, как в твоем примере. Если посмотреть внимательнее, то можно заметить что я передаю строчку, а не цифру. Если ты передаешь не строку (как написано в документации), а цифру (8-разрядную), и при этом используешь 16 разрядов как основание, то я даже не могу объяснить что там происходит
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 10.10.2015, 2:10; Ответить: Arks
Сообщение #3


(Degradator @ 9.10.2015, 21:03) *
Если ты передаешь не строку (как написано в документации), а цифру (8-разрядную), и при этом используешь 16 разрядов как основание, то я даже не могу объяснить что там происходит

Ничего особого там не происходит - все приводится к бинарному исчислению и обратно.

Хочу обратить внимание что в PHP7 несколько меняется поведение строк с '0...' и '0x...'

сейчас так:

[PHP]
php > echo 1 * 017;
15
php > echo 1 * '017';
17
php > echo 1 * 0x17;
23
php > echo 1 * '0x17';
23
[/PHP]

такое поведение будет исправлено

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Криптобиржа Binance прекратит операции с рублями с 1 февраля
7 Room 2380 7.3.2024, 21:08
автор: Lumex


 



RSS Текстовая версия Сейчас: 18.4.2024, 19:28
Дизайн