Criar matriz de byte atraves de uma String

Delphi

27/05/2008

Galera, seguinte tenho uma imagem que é guardada em uma matriz do tipo byte, ela é assim:

const byte RPrint [] = {
0x01, 0x01, 0x01, 0x31, 0x00, 0x30, 0x38, 0x30, 0x02, 0x20, 0x89, 0xE0, 0xE3, 0xF0, 0xF9, 0xFD,
0xFD, 0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFC, 0xF8, 0xF8, 0xF0, 0xE2, 0xE4, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0x80, 0x20, 0x04, 0x03, 0x84, 0xF3, 0xFA, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0x3F, 0x3F, 0x7F, 0xBF,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x3F, 0x3F, 0xBF, 0xBF, 0x3F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xFC, 0xA2, 0x08, 0x90, 0x80,
0x24, 0x80, 0x06, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x87, 0xC9, 0xF8, 0xFA, 0xF9, 0xFC, 0xFC, 0xFE, 0xFE, 0xFE,
0xFE, 0xFC, 0xF8, 0x60, 0xFE, 0xFD, 0xFC, 0xFD, 0xFD, 0xFE, 0xFC, 0xFC, 0xFE, 0xFC, 0xFC, 0xF8,
0xF0, 0xC2, 0x40, 0x69, 0xFC, 0xFC, 0xFC, 0xFE, 0xFD, 0xFC, 0xFC, 0xE2, 0x05, 0xE0, 0xFC, 0xFC,
0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x04, 0x00, 0x88, 0xC0,
0xE2, 0xF8, 0xF9, 0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xFC, 0xF8, 0xF2, 0xC4, 0x00, 0x08, 0xE4, 0xF2,
0xF8, 0xFC, 0xFC, 0xFC, 0xFD, 0xFC, 0xFC, 0xFC, 0xF4, 0xE0, 0x81, 0x07, 0x3F, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF0, 0x04,
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x3F, 0x10, 0x52, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x2F, 0x07, 0x0F,
0x0F, 0x3F, 0x1F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xC0, 0x20, 0x88, 0x03, 0x48, 0x22, 0x20, 0x10, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0xBF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x44, 0x3E, 0x3F, 0x3F,
0xBF, 0x3F, 0x3F, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x40, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
0x00, 0x80, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFC, 0x20, 0x81, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF8, 0xF8,
0xFC, 0xFC, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x9F, 0x1F, 0x1F, 0x4F,
0x87, 0x63, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0xEA, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xF4, 0x81, 0x00, 0x04, 0xD0,
0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xF2, 0x08, 0x00, 0x80, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
0x54, 0x19, 0x24, 0x45, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xC1, 0x83, 0x07, 0x2F, 0x1F, 0x9F, 0x3F, 0x1F, 0x1F,
0x3F, 0x1F, 0x4F, 0x10, 0x1F, 0x9F, 0x1F, 0x1F, 0x5F, 0x3F, 0x5F, 0x24, 0x24, 0x0C, 0x40, 0x10,
0x41, 0x0A, 0x9F, 0x1F, 0x5F, 0x9F, 0x3F, 0x1F, 0x50, 0x02, 0x1F, 0x1F, 0x5F, 0x1F, 0x5F, 0x00,
0x08, 0x9F, 0x5F, 0x3F, 0x1F, 0x1F, 0x1F, 0x98, 0x05, 0x20, 0x02, 0x42, 0x23, 0x10, 0x3A, 0x1E,
0x1F, 0x9F, 0x1F, 0x5F, 0x1F, 0x3F, 0x1F, 0x1F, 0x1F, 0x5F, 0x1F, 0x1F, 0xCB, 0x3C, 0x1F, 0x3F,
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xDF, 0xDF, 0xF0, 0xFD, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x27, 0x18,
0x20, 0x50, 0x05, 0x04, 0x8C, 0x69, 0x07, 0x0F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xDF, 0x07, 0x53, 0x06, 0x08, 0x28,
0x30, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x94, 0x74, 0x23, 0x0B, 0x87, 0x1F, 0x5F,
0x1F, 0xBF, 0x3F, 0x3F, 0x7F, 0x3F, 0x3F, 0x7F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x7F, 0x3F, 0x3F, 0xBF, 0x3F, 0x7F, 0x3F, 0x3F,
0xBF, 0x7F, 0x9F, 0x0F, 0x27, 0x07, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

só que eu preciso construir esta matriz dinamicamente, este conteudo está nums string tipo

StringImagem = ´ 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x7F, 0x3F, 0x3F, 0xBF, 0x3F, 0x7F, 0x3F, 0x3F´ ....

como faria para montar cada codigo hexa dentro de uma posição de minha matriz
tipo eu tenho ela criada zerada byte RPrint [];
tem alguma maneira de fazer isso?
pq eu uso a variavel RPrint para imprimir a imagem....

Obrigado desde jah!


Darkducke

Darkducke

Curtidas 0

Respostas

Rodc

Rodc

27/05/2008

Usando C++ Builder:

O código abaixo faz o que você quer. Só que a função HexToInt() não existe. Mas como você é um cara esperto, vai dar uma olhada na net e descobrir como converte Hexa para Inteiro.
AnsiString StringImagem = "0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x7F, 0x3F, 0x3F, 0xBF, 0x3F, 0x7F, 0x3F, 0x3F";
TStringList *lista = new TStringList();
lista->CommaText = StringImagem;

byte *vetor = new byte[lista->Count];

for (int x=0; x<lista->Count; x++) {
    AnsiString valorHexa = lista->Strings[x].Trim().SubString(3, 2);
    vetor[x] = HexToInt(valorHexa);
}

delete[] vetor;
delete lista;



GOSTEI 0
Darkducke

Darkducke

27/05/2008

Usando C++ Builder: O código abaixo faz o que você quer. Só que a função HexToInt() não existe. Mas como você é um cara esperto, vai dar uma olhada na net e descobrir como converte Hexa para Inteiro.
AnsiString StringImagem = "0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x7F, 0x3F, 0x3F, 0xBF, 0x3F, 0x7F, 0x3F, 0x3F";
TStringList *lista = new TStringList();
lista->CommaText = StringImagem;

byte *vetor = new byte[lista->Count];

for (int x=0; x<lista->Count; x++) {
    AnsiString valorHexa = lista->Strings[x].Trim().SubString(3, 2);
    vetor[x] = HexToInt(valorHexa);
}

delete[] vetor;
delete lista;


Tem que ser em C,
um colega passou uma função, soh que o problema ta quando passo a variavel char para a variavel byte.. quando mando imprimir não sai o esperado, ou seja, os 0x00 não estão sendo inseridos como hexa....

=/


GOSTEI 0
Rodc

Rodc

27/05/2008

Quando você tenta imprimir uma sequência de caracteres que tem 0x00 no meio da sequência, ele pára de imprimir no caracter zerado.
Se quizer poste o código aqui que eu tendo dar uma olhada.


GOSTEI 0
POSTAR