这张图片取自BMP 前面已经讨论研究过的不再赘述 这里着重研究红框内的内容
前面两public int getWidth() {
return width;
}
public int getHeight() {
return height;
}
是最近一直在背的ArrayList中get的方法 这里顺带复习 他们的返回值是此列表中指定位置的元素
public static int b2i(byte[] b, int s) { }这段代码定义了一个b的字节整数 和一个整数s 从前面代码研究我猜测这里用byte定义是因为连连看中的图片数量有限 用byte的范围来定义刚刚好
for (int i = 0; i < 4; i++) {
int temp = b[s + i] & 0xff;
这部分for循环的代码理解得到的大概意思就是byte本来的取值范围是-127到128 这边作者是运用& 0xff 使他的取值全部变为正数 这样就符合我前面猜想的所有图片编号列为数组了
接下来的ret += temp << (8 * i); 上文说i<4 那么取值就是1~3 然后<<是左移两位 可以猜测就是2的18*8次方 这么大的数字作者有事为了什么呢 但是bmp接下来的代码没有再出现ret 我将会等到再次出现ret时再进行研究