DLL para converter arquivos em hexa e vice-versa

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?

O tráfego sempre será em bytes. Você quer transmitir é em formato texto?

Caso seja isso, melhor do que representar cada byte como o seu respectivo texto em hexa seria usar um encoding como BASE64.

Olá Vini,

Infelizmente há essa necessidade de ser texto devido a limitação da ferramenta que irá utilizar essa DLL que só recebe texto, além de outras como limite máximo de 16K de retorno no buffer.

Optei no momento por hexa pelo simples fato de ser mais fácil visualizar/debugar, mas pensei também em base64 pois a conversão ficaria menor do que em hexa.

Vou fazer alguns testes em base64.

Aqui tem um exemplo de como converter os bytes para hexa:
http://www.guj.com.br/java/221905-editor-de-hexa#1135992

Mas não tem a conversão reversa. Mas deve ser fácil adaptar o código.
Veja em especial o método toHex e como é tratada a variável hexPart.