Цитата:
Теперь, когда у вас pr объект, а не массив: а вы pr['Moscow'] инициализируете нулём предварительно? |
Цитата:
|
exec,
Цитата:
И у меня тоже вопрос похожего характера. У меня есть строка битов(string), длина ее 128. И ее нужно преобразовать в квадратный массив [4]x[4]. То бишь по 8 бит в ячейке. Чтобы сделать вашим способом, мне нужно сначала строку преобразовать в одномерный массив, по 8 бит на элемент, а затем только делать эти преобразования? Не подскажите какие есть варианты? можно ли сразу делать присвоение типа array[i][j]=значение внутри цикла со счетчиком j, который вложен соответственно в цикл со счетчиком i? |
С одной стороны строка это как-то глупо :) С другой число 128 бит, многовато для сдвига. Чтобы не думать разорвать строку на одномерный массив по 8 символов, пройтись по элементам преобразовав их в числа и применить выше описанную функцию.
|
vladlen,
Дело в том что в основную функцию попадает текст, преобразующийся потом в двоичный вид, и обрабатываемый в последствии кусками по 128 бит. Думаете, хранить весь исходный двоичный текст, а он, например, на полмегабайта в массиве(элемент=1бит)?:blink: Или только 128-битные блоки? Я не знаю как лучше, просто мне кажется, что если длинные массивы крутить в циклах, очень медленно работать будет, там ведь еще куча преобразований |
Вы задачу нормально опишите, а то тут какой-то текст приплели.
|
vladlen,
В функцию попадает текст, например value какого нибудь textarea. Там он кодируется в двоичный вид. Затем рвется на куски по 128бит и вот этот 128 бит кусок нужно скопировать в квадратный массив 4х4 по 8 бит в ячейке. Сначала был вопрос как это сделать если у меня двоичный код хранится в string. Вы мне посоветовали хранить двоичный код в массиве, вот я и спросил, все ли будет ок если я длиннющий бинарный код буду держать в массиве? Я думал что будет долго работать, но все нормально. Спасибо за совет:) Теперь я без проблем могу разбить 128битные блоки на массив 4х4, правда массив получится вида [[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]], [[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]], [[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]], [[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]]] |
Нет, не без проблем:D Подскажите пожалуйста, как мне одномерный массив битов преобразовать в квадратный массив вида как изобразил выше:(
|
Я сделал вот так, в несколько ходов, хотелось бы конечно покрасивше:(
input - одномерный массив битов. tInp - временный массив, в который возвращаю преобраованный input, потом обратно в input возвращаю его значение. И только потом получил массив state, такой который хотел. Вобщем абракадабра.:( byteLen=8; for (var j=0; j<input.length;j+=byteLen) tInp.push(input.slice(j, j+byteLen)); input = tInp; for (var r=0; r<4;r++) state.push(input.slice(r*input.length/4, r*input.length/4+input.length/4)); |
Все, проблема решена) нашел хорошую шпаргалку как создавать многомерный массив, причем таких этажей сколько угодно можно сделать. Просто. Не знаю почему не доходило...
var a=new Array (); for (i = 0; i < rows; i++) { a[i]=new Array (); for (j = 0; j < cols; j++) { a[i][j] = value; } } |
Часовой пояс GMT +3, время: 03:22. |