Хранение пикселей в байтовом массиве - PullRequest
1 голос
/ 28 октября 2010

Об этом спрашивали в одном из интервью, и я не могу найти какой-либо ключ к этому.Вопрос:

У меня есть экран 40 x 20, и я хочу сохранить эти пиксели в байтовом массиве, чтобы я мог восстановить этот экран снова из байтового массива.Размер байтового массива составляет 100 байт.

Еще один взгляд на это.Как мы храним один пиксель (x, y), используя один бит.Так как есть 40 * 20 = 800 пикселей и у нас есть 100 байтов.

Любые советы / идеи или ссылки будут полезны

Спасибо, Чандер

Ответы [ 3 ]

1 голос
/ 28 октября 2010

Один байт - 8 бит.Таким образом, вы можете хранить 100 байт · 8 бит / байт = 800 бит информации с этими 100 байтами.

Поскольку каждый бит может иметь два значения (0, 1), вы можете представлять только два состояния с каждым битом.В случае экрана эти два состояния могут быть 0 = черный и 1 = белый или 0 = выключен свет и 1 = свет включен .

И так как у вас есть 800 бит, вы можете представить свои 40 · 20 пикселей = 800 пикселей этими 800 битами, причем каждый бит представляет одно из двух состояний.

1 голос
/ 28 октября 2010

Я думаю, что слово, которое вы ищете, это bitmap.Каждый бит в 80 байтах = 1 пиксель на экране (0 = черный, 1 = белый).

Вам не нужно больше, потому что форма вывода задана.

0 голосов
/ 14 сентября 2014

Предположим, если у вас есть пиксели, представленные в формате 40x20 пикселей, и скажем, что это ввод в форме

byte [] [] input = {1,0,1 ...}, каждая запись является значением пикселя,чтобы сохранить в байтовом массиве, который вы можете просто сделать,

 for(int i=0...width)
  for(int j=0...height)
    byteArr[pos]|=input[i][j]<<j

это означает, что для каждой отдельной позиции, просто ИЛИ 8 бит информации из исходного массива, чтобы сохранить как одно значение, преобразовать его обратно просто взятькаждый byteArr [index] и извлекать каждый бит в позиции от 0,8 до сдвига вправо (>> pos)

Другой вопрос, который нужно задать, это если вы используете порядок с прямым порядком байтов или порядок с прямым порядком байтов, в настоящее времяПредположим, что массив является прямым порядком байтов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...