$b = $a >> 2; - сдвиг битов на две позиции вправо, тут может пригодится константа PHP_INT_SIZE
3. - помогают работать с битовыми масками и с битами в вообще
2. - популярный метод хранить много булевых значений в одной переменной и включать/проверять с помощью AND/OR операций. Если вы когда либо выполняли chmod 755, то уже включали эти флажки на привилий.
1. Бинарное чтение файла - fopen("binaryfile","b");
Честно, для меня было откровением что порядок в данных имеет значение. Я привык что 123 уже подразумевает где сотни, десятки и единицы, но для компьютера ведь всё равно. Конечно одно дело порядок написания для человека.. но тут другое - порядок записи байтов в зависимости от адреса. И больше всего удивительно что архитектуры на уровне работы с памятью - x86 на стороне little endian, а за big endian SPARC и прочие. Поэтому если вы интегрируете разные архитектуры с бинарным форматом данных - договоритесь которая система будет работать.
Итого, у нас char a будет хранить значение от -128 до 127.. ну или 256 если это extended ASCII. Отлично. Теперь как это использовать в php?
Float (с плавающей запятой) 1.3f или 1.3F
Long double или long int. Например 1.2l или 1L - фиг поймёшь, это единица или long
Кроме этого, если вы переписываетесь с коллегами которые пишут на си, то они могут обозначать приставками или окончаниями
Шестнадцатиричная, например 0xF560B1A9
Восьмеричная, например 0123
Бинарная, например 0b1011
Если с бинарными данными не работать, то можно и забыть основы языка. С целыми числами на основании 10 всё понятно, но обычно значения длинных данных в них не пишут. Это объясняет табличку выше.
Char при этом используется универсально согласно ASCII табличке как в качестве явного кодирования текста, так и вспомогательными маркерами. Про float я умолчу, ибо мне не понадобилось.
Напоминаю какие типы данных есть в Си, на котором основан php
Целые типы данных
PHP как язык плохо подходит для работы бинарными данными напрямую. Но иногда приложения должны взаимодействовать по таким протоколам, где размер пакетов очень важен или для какого-то приложения, который никем в красивый json или xml не переводится.
Работа с бинарными данными в php
Артём Курапов, веб-разработчик из Эстонии.
Работа с бинарными данными в php
Комментариев нет:
Отправить комментарий