16์ง์๋ฅผ 2์ง์๋ก ๋ฐ๊พธ๊ธฐ
Entry ๋ธ๋ก ์ค์ ๋ํธ ๋งคํธ๋ฆญ์ค ์ผ์๋ฅผ ๊ตฌํ์ ์ํด์ 16์ง์๋ฅผ 2์ง์๋ก ๋ณํํด์ผํ๋ค. ์ฌ์ฉ์๊ฐ ๋ํธ ๋งคํธ๋ฆญ์ค์ ํ๋ง๋ค ๋ธ๋ก์ ๋ฐ์ด๋๋ฆฌ ๊ฐ์ ์ ๋ ฅํ๋ ๊ฑด ๋ถํธํ๋ค๊ณ ๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, 16์ง์ ํ์ค์ ์ ๋ ฅํ๋ฉด ํ์จ์ด์์ 2์ง์๋ก ๋ณ๊ฒฝํ์ฌ ๋งคํธ๋ฆญ์ค์ ์ถ๋ ฅํ๋ ๋ฐฉ์์ ์๊ฐํ๋ค. ๋ํธ๋งคํธ๋ฆญ์ค ๋ณํ ์ฌ์ดํธ๋ ์ฌ๊ธฐ๋ฅผ ์ด์ฉํ์๋ค. 16์ง์์ 2์ง์ ๊ฒฐ๊ณผ ๊ฐ ๋ชจ๋๋ฅผ ๋ณด์ฌ์ฃผ์ด ์ฐธ๊ณ ํ๊ธฐ์ ์ข๋ค.
์ฒ์์ ์ค์์น ๋ฌธ์ ์ด์ฉํด ์ผ์ด์ค๋ฅผ ๋๋๋ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ณด์๋ค.
switch (hexdec[i]) {
case '0':
if (i % 2 == 0) { //์ง์์ธ ๊ฒฝ์ฐ
m[index] = B0000;
} else { //ํ์์ธ ๊ฒฝ์ฐ(๋ถ์ด๊ธฐ)
m[index] = m[index] << 4;
m[index] += B0000;
}
break;
์ด๋ฐ ์์ผ๋ก 16๊ฐ์ง ์ผ์ด์ค๋ฅผ ๋๋์ด shift์ฐ์ฐ์ผ๋ก ์๋ฆฌ์๋ฅผ ์ฎ๊ธฐ๊ณ ๋ง๋ถ์ด๋ ๋ฐฉ๋ฒ์ ์๊ฐํ์๋๋ฐ shift์ฐ์ฐ์ ์ฌ์ฉํ๋ฉด ๋ ์ฝ๊ฒ ํด๊ฒฐ๋ ๋ฌธ์ ์๋ค.
uint64_t image = 0xff001c183ce39dff;
for (int i = 0; i < 8; i++) {
byte row = (image >> i * 8)&0xFF;
for (int j = 0; j < 8; j++)
{
lcjikko->setLed(0, i, j, bitRead(row, j));
}
}
uint64_t
๋ ์๋ฃํ์ด ์์์ธ 64๋นํธ๋ฅผ ๋ปํ๋ค. 0x
๊ฐ ์์ ๋ถ์ผ๋ฉด 16์ง์๋ฅผ ๋ปํ๋ค. ์ฐธ๊ณ ๋ก B
๊ฐ ์์ ๋ถ์ผ๋ฉด 2์ง์์ด๋ค. byte
๋ 0-255์ 8๋นํธ ๋ถํธ์๋ ์ซ์๊ฐ์ ๋ํ๋ด๋ ์๋ฃํ์ด๋ค.
๋ฐ๋ผ์ byte row=(image >> i *8);
์์๋ 8์๋ฆฌ์ฉ ๋นํธ shift ์ฐ์ฐ์ ํตํด row์ ์ ์ฅ๋๋ฉฐ, row์ ํฌ๊ธฐ๋ 8๋นํธ์ด๊ธฐ ๋๋ฌธ์ ๋ํธ ๋งคํธ๋ฆญ์ค์ ํ ์ค์ฉ ์ถ๋ ฅํ ์ ์๋ ๊ฒ์ด๋ค. ์ ์๋ ธ๋์ง ํ์ธํ๊ณ ์ถ์ผ๋ฉด Serial.print(row,BIN)
์ ํตํด ํ์ธํ ์ ์๋ค. &0xFF
์ฐ์ฐ์ ํ๋ ์ด์ ๋ ๋ค์ 8๋นํธ๋ง ๋จ๊ธฐ๊ธฐ ์ํจ์ธ๋ฐ ์ด๋ฏธ byte์ ์๋ฃํ ๋๋ฌธ์ 8๋นํธ๋ง ์งค๋ฆฌ๊ธฐ ๋๋ฌธ์ ์์ด๋ ๋ฌธ์ ๋ ์๋ค. row
์ ์๋ฃํ์ด int
๋ผ๋ฉด &0xFF
์ฐ์ฐ์ด ํ์ํ๋ค.