Olá pessoal,
Estou precisando desenvolver uma DLL (em C) que leia partes de arquivo e retorne convertido em hexa, depois em certo momento preciso converter essa parte em hexa para um array de bytes novamente.
A necessidade disso é que preciso que o arquivo convertido trafegue em vários lugares e se for como byte esta dando problemas na hora de voltar esse arquivo ao original.
Abaixo esta a parte que converte:
O software que chama essa DLL passa a variável buffer preenchida com vazio (’ ') e mando ler do arquivo X bytes (readBytes):
[code]
int readData(FILE *file, char *buffer, int readBytes, int convert) {
if (file == NULL) {
return -1;
}
unsigned char *byteBuffer = (unsigned char*) malloc(readBytes);
char *bufPtr = buffer;
size_t i, n, c;
n = (size_t) fread(byteBuffer, sizeof(uint8_t), readBytes, file);
if (convert > 0) {
for (i = 0; i < n; i++) {
bufPtr += sprintf(bufPtr, "%02x", byteBuffer[i]);
}
} else {
sprintf(buffer, "%s", byteBuffer);
}
free(byteBuffer);
return n;
}[/code]
Agora como eu faço o processo inverso, de hexa para bytes?