如何通过UNIX套接字发送example.wav文件字节编码的base64?
Project-->Properties-->Builders
这是我从文件中读取的内容。 现在我需要从这个数组中获取字符串或东西,因为我需要编码,当我尝试:
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;
}
程序仅对RIFF�3进行编码。
我可以做循环
printf("%s\n", ret);
Output: RIFF�3
然后我得到更有趣的东西,但是,我怎么能编码整个二进制数组。 稍后我将通过UNIX套接字发送编码字符串,但不是ATM。
EDITED产品:> 我使用http://fm4dd.com/programming/base64/base64_stringencode_c.htm算法进行编码。这对二进制文件有误吗?
答案 0 :(得分:0)
您正在使用的功能(b64_encode)只能编码字符串。 确保修改该函数,使其迭代缓冲区中的所有字符。
也许这样的东西会起作用(我没有测试过代码):
/* encode - base64 encode a stream, adding padding if needed */
void b64_encode(char *clrstr, int length, char *b64dst) {
unsigned char in[3];
int i, len = 0;
int j = 0;
b64dst[0] = '\0';
while(j<length) {
len = 0;
for(i=0; i<3; i++) {
in[i] = (unsigned char) clrstr[j];
if(j<length) {
len++; j++;
}
else in[i] = 0;
}
if( len ) {
encodeblock( in, b64dst, len );
}
}
}