Как я могу отправить файл example.wav в байтах байта base64 через UNIX-сокет?Двоичный массив к base64
char* readFileBytes(const char *name){
FILE *fl = fopen(name, "rb");
fseek(fl, 0, SEEK_END);
long len = ftell(fl);
char *ret = malloc(len);
fseek(fl, 0, SEEK_SET);
fread(ret, 1, len, fl);
fclose(fl);
return ret;
}
Это мое чтение из файла. Теперь мне нужно получить строку или что-то из этого массива, потому что мне нужно кодировать, и когда я пытаюсь:
printf("%s\n", ret);
Output: RIFF�3
программа кодирует только что RIFF3.
я могу сделать цикл
for(int i=0; i<len;i++){printf("%u ",ren[0])}
Тогда я получить что-то более интересную, но все-таки, как я могу кодировать весь двоичный массив. Позже я отправлю закодированную строку через сокет UNIX, но это не тот банкомат.
EDITED:> Я использую алгоритм для кодирования http://fm4dd.com/programming/base64/base64_stringencode_c.htm. Это неправильно для двоичных?
Вы не можете использовать функции строки с двоичными данными. Двоичные данные могут содержать байты, которые ноль находятся внутри данных, и это то же значение, что и для терминатора строк. Конечно, он может содержать непечатаемые «символы», как вы видите на своем выходе. –
Тогда как я должен отправлять двоичные данные через сокет или конвертировать в base64? –
Возможный дубликат [Как кодировать (декодировать) base64 в C?] (Http://stackoverflow.com/questions/342409/how-do-i-base64-encode-decode-in-c) –