Eu tenho uma planilha que estou usando para ajudar a visualizar um mapa de bit de caractere para cada caractere ASCII. Para uma fonte de 5x7, eu uso 5 células de largura (colunas) e 7 células de altura (linhas). Em seguida, marquei o fundo preto para cada célula em uma coluna de 8 linhas, para representar os bits de um byte, onde cada bit é um pixel, e um fundo preto significa um pixel que é ON
. Então, eu crio uma matriz de bytes que será minha representação de caractere. Eu tenho que fazer isso por 95 caracteres (valores ASCII), para cada tamanho de fonte que eu quero.
O problema é que eu tenho que olhar para cada coluna do caractere e determinar seu valor binário e, em seguida, descobrir o valor hexadecimal. Então, tentar descobrir 495 bytes para uma tabela de cinco caracteres torna-se um trabalho tedioso. Eu quero saber se existe uma função de planilha que eu poderia escrever que iria inspecionar a cor de fundo de uma célula, se preto seria definir o n th bit de uma variável e, em seguida, criar o valor hexadecimal de essa coluna abaixo.
TL; DR Não tenho experiência de escrita de função no Excel. Eu estou trabalhando com uma tela de LCD. Eu tenho uma planilha com todos os meus personagens - onde cada pixel que é ON
teria a cor de fundo preta. 1 célula = 1 bit de um byte. Eu preciso de uma função que me dará um valor hexadecimal de uma coluna dependendo se a célula de plano de fundo é preta ou não. Prossiga para ilustrações.
Aqui está um exemplo de um caractere 'A' de 5x7 na minha planilha. Um *** representa que uma cor de fundo de células é preta, caso contrário, branco. (Não seria um problema adicionar algo como um valor de célula de 1 a cada célula que tenha uma cor de fundo preta, se necessário, para tornar isso uma função mais fácil):
____________________
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)
A matriz de bytes seria então:
byte A[] = { 0x7E, 0x09, 0x09, 0x09, 0x7E };
Versão de pseudo-código (para uma coluna):
char hex = 0x00;
for(int bI = 0; bI < 8; bI++)
{
if(cell[bI].BackgroundColor == Black)
{
hex |= (0x01 << bI;
}
}
row8.Text = hex.ToString("X2");