У меня есть электронная таблица, которую я использую, чтобы помочь визуализировать битовую карту символов для каждого символа ASCII. Для шрифта 5x7 я использую 5 ячеек (столбцы) и 7 ячеек (строки). Затем я отметил черный фон для каждой ячейки в столбце из 8 строк, чтобы представить биты байта, где каждый бит является пикселем, а черный фон означает, что пиксель ON
. Затем я создаю байтовый массив, который будет моим символьным представлением. Я должен сделать это для 95 символов (значения ASCII), для каждого размера шрифта, который я хочу.
Проблема в том, что я должен смотреть на каждый столбец персонажа, определять его двоичное значение, а затем вычислять шестнадцатеричное значение. Поэтому попытка вычислить 495 байтов для таблицы из 5 символов становится утомительной работой. Я хочу знать, есть ли функция рабочего листа, которую я мог бы написать, которая будет проверять цвет фона ячейки, если черный установит n- й бит переменной, а затем создаст шестнадцатеричное значение этого столбца ниже.
TL; DR У меня нет опыта написания функций в Excel. Я работаю с ЖК-экраном. У меня есть электронная таблица со всеми моими персонажами, где каждый ON
пиксель будет иметь черный цвет фона. 1 ячейка = 1 бит байта. Мне нужна функция, которая даст мне шестнадцатеричное значение столбца в зависимости от того, черный фон ячейки или нет. Перейдите к иллюстрациям.
Вот пример 5x7 символа «А» в моей электронной таблице. *** означает, что цвет фона ячейки черный, в противном случае - белый. (Не было бы проблемой добавить что-то вроде значения ячейки 1 в каждую ячейку, которая имеет цвет фона при необходимости, чтобы сделать эту функцию проще):
____________________
B0| |***|***|***| | (row 0)
|-------------------|
B1|***| | | |***| (row 1)
|-------------------|
B2|***| | | |***| (row 2)
|-------------------|
B3|***|***|***|***|***| (row 3)
|-------------------|
B4|***| | | |***| (row 4)
|-------------------|
B5|***| | | |***| (row 5)
|-------------------|
B6|***| | | |***| (row 6)
|-------------------|
B7|___|___|___|___|___| (row 7)
7E 09 09 09 7E (row 8)
Затем байтовый массив будет:
byte A[] = { 0x7E, 0x09, 0x09, 0x09, 0x7E };
Версия псевдокода (для одного столбца):
char hex = 0x00;
for(int bI = 0; bI < 8; bI++)
{
if(cell[bI].BackgroundColor == Black)
{
hex |= (0x01 << bI;
}
}
row8.Text = hex.ToString("X2");