Как получить такой двоичный код? Добрый день, есть часть массива [7] => 11100011 [8] => 10000000 //скорее всего 9 ячейка не играет роли [9] => 10000000 из этих 3x ячеек(еще возможно что из 2х - 7 и 8), каким-то мне неизвестным способом формируется вот такое значени - 1001111101100011 Возможно у кого-то есть идеи как это может происходить? Единственное, что я вижу тут - первые 7 бит из результата равняются первым 7ми битам из 7й ячейки... Благодарен за любую помощь, возможно совет в какую сторону копать.Немного предыстории: Есть карточная игра и её разработчики придумали недавно выпустили патч, в котором можно колоду сконвертировать в строку и например скинуть другу, друг копирует и в игре вставив этот код - получает готовую колоду, т.е. руками он не выбирает карты. В строке хранится информация про формат, какие карты туда входят и в каком количестве и еще немного ненужной инфы, так вот код примерно выглядит так AAECAf0GCpHHAuO+ArEI5MIClMcCMJG8AsQI68IC5QcKvLYC9wTUswKnCLSsAtkH4wXQBM4HwggA Мне нужно получить ID карт которые вшиты в этот строку. Вначале я эту строку перегоняю через base64_decode получаю строку из ASCII символов, дальше каждый символ в цикле перебираю и из символа получаю ASCII код(00000010 и тп), в зависимости от символа. И отсюда я уже взял часть массива. Дело в том что раньше код отлично работал, если например в массиве присутствовали слудеющие 3 байта: 10010001 11000111 00000010 методом проб и ошибок я выявил, что чтобы получить ID карты нужно удалить 7й бит(если он равен 1) и пристыковать следующий, если и у него 7й бит = 1 - удаляется 7й бит и пристыковывается следующий и так пока 7й бит не будет равен 0 - в итоге имеем 0000001010001110010001, если это дело перевести с двоичного в десятичное получается 41873, что как-раз и является ID одной из карт в колоде, и такая магия проделывается по очереди с каждым элементом массива. Все работало до того момента пока а колоду не вошли карты из одного нового комплекта. Отсюда и эти 2 значения 11100011 10000000 Методом который я описал выше, скрипт просто видит 10000000 вырезает 7й бит и берет следующий элемент и дальше все идет коту под хвост. Метод хранения придумывали разработчики игры, не я. Мне это нужно понять, чтобы по данному коду можно было получить колоду из n количества карт.
На основании вашего описания, предположу, что для получения идентификатора карты из последовательности битов вам нужно применить некоторую логику обработки битов, основываясь на значении седьмого бита.
Одним из способов можно быть следующий:
Преобразовать каждый байт из исходного массива в последовательность битов.Для каждого байта проверить значение седьмого бита. Если он равен 1, удалить этот бит и взять следующий байт для продолжения последовательности.Продолжать этот процесс до тех пор, пока значение седьмого бита не будет равно 0.Собрать все полученные биты в новую последовательность и преобразовать ее обратно в десятичное число, которое и будет идентификатором карты.
Это только один из возможных способов обработки данных. Возможно, потребуется дополнительное исследование и эксперименты для определения конкретного алгоритма, который применяется разработчиками игры. Надеюсь, это поможет вам в решении проблемы. Если у вас есть дополнительные вопросы или уточнения, пожалуйста, не стесняйтесь задать их.
На основании вашего описания, предположу, что для получения идентификатора карты из последовательности битов вам нужно применить некоторую логику обработки битов, основываясь на значении седьмого бита.
Одним из способов можно быть следующий:
Преобразовать каждый байт из исходного массива в последовательность битов.Для каждого байта проверить значение седьмого бита. Если он равен 1, удалить этот бит и взять следующий байт для продолжения последовательности.Продолжать этот процесс до тех пор, пока значение седьмого бита не будет равно 0.Собрать все полученные биты в новую последовательность и преобразовать ее обратно в десятичное число, которое и будет идентификатором карты.Это только один из возможных способов обработки данных. Возможно, потребуется дополнительное исследование и эксперименты для определения конкретного алгоритма, который применяется разработчиками игры. Надеюсь, это поможет вам в решении проблемы. Если у вас есть дополнительные вопросы или уточнения, пожалуйста, не стесняйтесь задать их.