example.wavファイルのバイトをUNIXソケット経由でbase64にエンコードするにはどうすればよいですか?2進配列から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])}
を行うことができ、私はもっと何かのintrestingを得るが、それでも、どのように私は、全体のバイナリ配列をコードすることができます。 後で、私はUNIXソケット経由でエンコードされた文字列を送信しますが、ATMの場合はそうではありません。
EDITED:> 私はhttp://fm4dd.com/programming/base64/base64_stringencode_c.htmエンコーディングアルゴリズムを使用します。バイナリに間違っていますか?
あなたは、バイナリデータを文字列関数を使用することはできません。バイナリデータには、データ内の任意の場所に0のバイトが含まれている可能性があります。これは、文字列ターミネータで使用される値と同じです。もちろん、出力に表示されるように、印刷不可能な「文字」を含むこともできます。 –
次に、ソケット経由でバイナリデータを送信するか、base64に変換する必要がありますか? –
[Cでbase64エンコード(デコード)する方法は?](http://stackoverflow.com/questions/342409/how-do-i-base64-encode-decode-in-c) –