2015-05-12 5 views
2

Эй, ребята, я пытаюсь создать инструмент для вычисления количества 6 байтов, которые он генерирует в течение определенного времени, установленного мной, например 10 или 1 мин и т. Д. Последовательность, например, равна: 4F B0 33 47 A3 BC.Как генерировать шестнадцатеричную последовательность в Swift?

Итак, это шестнадцатеричные числа, и каждый из 6 байтов вместе должен быть уникальным и начинаться с 00 00 00 00 00 00 до FF FF FF FF FF FF.

Так что проблема в том, что я не могу понять, как я могу настроить счетчик, чтобы он начинался с 0 по F и делал все возможные комбинации.

Все, что я знаю, это то, что это невозможно сделать случайным образом, поскольку оно может генерировать дубликаты во время процесса, и, как я сказал, это должна быть уникальная последовательность в 6 байтов.

Итак, у кого-нибудь есть идеи о том, как я могу это сделать?

ответ

1

Шесть байт представляют собой положительные числа в диапазоне от нуля, включительно, до 2 , эксклюзивный *. Каждое из этих значений может быть однозначно преобразовано в последовательность из шести байтов. Все эти значения соответствуют типу UInt64, поэтому, если вы хотите генерировать все возможные комбинации, начинайте с нуля и продолжайте увеличивать счетчик до тех пор, пока не достигнете 0xFFFFFFFFFFFF.

Вы можете сделать преобразование в шестнадцатеричную последовательность различными способами - например, вы можете использовать сдвиги и побитовые операторы для «вырезания» каждого байта и форматирования его как шестнадцатеричного значения.

* Другие интерпретации возможны, но положительные числа в диапазоне от 0 до 0xFFFFFFFFFFFF достаточно хороши для целей этой задачи.

+0

Итак, простая петля от 0 до 281474976710655 сделала бы трюк ??? –

+0

@MarcoAlmeida Да, если вы не возражаете, чтобы ваши комбинации были последовательными, это было бы. Если вы хотите рандомизировать их, вы тоже можете это сделать, но вам нужно будет сохранить набор комбинаций хэшей, который вы видели ранее. – dasblinkenlight

+0

Ну, так как последовательный результат достигнет той же цели, которую я хочу, чтобы оценить количество сгенерированных чисел в заданное время, так как это происходит случайным образом, я думаю, что это меньше кода, идущего последовательно. Как вы думаете? –

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