将像素存储在字节数组中

时间:2010-10-28 18:05:12

标签: algorithm

在其中一次采访中被问到,我似乎无法找到任何线索。问题是:

我有40 x 20的屏幕,我想将这些像素存储在一个字节数组中,这样我就可以从字节数组中重新构建这个屏幕。字节数组的大小为100字节。

另一种看待它的方式是。我们如何使用一位存储单个像素(x,y)。因为,有40 * 20 = 800像素,我们有100个字节。

任何提示/想法或参考链接都会有所帮助

谢谢, Chander

3 个答案:

答案 0 :(得分:1)

我认为你要找的是bitmap。 80字节中的每个位=屏幕上的1个像素(0 =黑色,1 =白色)。

您不需要更多,因为输出的形状是给定的。

答案 1 :(得分:1)

一个字节是8位。因此,您可以使用这100个字节存储100字节·8位/字节= 800位信息。

由于每个位可以有两个值(0,1),因此每个位只能代表两个状态。在屏幕的情况下,这两种状态可以是0 = 黑色和1 = 白色或0 = 关灯和1 = 点亮

当你有800位时,你可以用这800位表示你的40·20像素= 800像素,每位代表两种状态中的一种。

答案 2 :(得分:0)

假设您有40x20像素的像素,并说这是表格中的输入

byte [] [] input = {1,0,1 ...}每个条目都是一个像素值,存储在你可以做的字节数组中,

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

这意味着对于每个单独的位置,只需将来自原始数组的OR 8位信息存储为单个值,将其转换回来只需取每个byteArr [index]并从0..8通过右移位提取位置中的每个位(&gt;&gt; pos)

另一个问题是问你是使用big-endian还是little-endian,目前我假设数组是小端