У меня есть огромная «двоичная» строка, например: 1110 0010 1000 1111 0000 1100 1010 0111 ....
Его длина равна 0 по модулю 4 и может достигать 500 000.
У меня также есть соответствующий массив: { 14 , 2, 8 , 15, 0 , 12, 10 , 7 , ...}
(каждое число в массиве соответствует 4 битам в строке)
Учитывая эту строку, этот массив и число N
, мне нужно вычислить следующую подстроку string.substr(4*N, 4)
, т. Е .:
для N=0
результат должен быть 1110
для N=1
результат должен быть 0010
Мне нужно выполнить эту задачу много раз, и мой вопрос: какой самый быстрый способ вычислить эту подстроку?
Один из методов - вычислить подстроку прямо: string.substr(4*N, 4)
. Боюсь, что этот не эффективен для таких огромных строк.
Другой метод - использовать array[N].toString(2)
, а затем обернуть результат нулями, если необходимо. Я не уверен, как быстро это.
Может быть, у вас есть другие идеи?