苟且,诗与远方
1.base64简介
Base64这个术语最初是在“MIME内容传输编码规范”中提出的。Base64不是一种加密算法,虽然编码后的字符串看起来有点加密的赶脚。它实际上是一种“二进制到文本”的编码方法,它能够将给定的任意二进制数据转换(映射)为ASCII字符串的形式,以便在只支持文本的环境中也能够顺利地传输二进制数据。例如支持MIME的电子邮件应用,或需要在XML中存储复杂数据时。
2.在线获取文件base64
链接1: 在线获取文件base64.
链接2: 百度AI-base64音频测试文件.
文件信息
项目 | Value |
---|---|
文件来源 | 百度AI官方 |
下载地址 | http://speech-doc.gz.bcebos.com/rest-api-asr/public_audio/16k.wav |
文件名 | 16k.wav |
文件类型 | wav格式音频文件 |
windows下文件大小 | 126 KB (129998 字节) |
文件精确大小 | 129998.25字节 |
base64总长度 | 173332位 |
base64文件实体部分长度 | 173310位 |
base64文件尾部还有多少个’=’ | 1个 |
3. 拆分base64文件
**看上图,圈出来的data:audio/wav;base64,一共22个字符为文件头,其他文文件实体。**
.
.
4. 精确计算base64文件大小
/**
* @功能 精确计算base64字符串文件大小(单位:B)
* @注意 base64字符串(不含data:audio/wav;base64,文件头)
*/
public static double base64file_size( String base64String ) {
//1.获取base64字符串长度(不含data:audio/wav;base64,文件头)
int size0 = base64String.length();
//2.获取字符串的尾巴的最后10个字符,用于判断尾巴是否有等号,正常生成的base64文件'等号'不会超过4个
String tail = base64String.substring(size0-10);
//3.找到等号,把等号也去掉,(等号其实是空的意思,不能算在文件大小里面)
int equalIndex = tail.indexOf("=");
if(equalIndex > 0) {
size0 = size0 - (10 - equalIndex);
}
//4.计算后得到的文件流大小,单位为字节
return size0 -( (double)size0 / 8 ) * 2;
}
计算出来的结果为:129998.25字节,windows系统和大多数API取129998字节
//* 以上面的测试文件16k.wav为例,其base64实体长度为173310,大小精确计算出来为129998.25字节,
//* 如果是调用百度官方语音识别API接口接收时,接收到的数据大小我们需要传入129998,不然接口会报文件大小错误。
5. 网上其他错误的计算方法
int strLen=173310;
int fileSize=strLen-(strLen/8)*2;
计算出来的结果为:129999字节
// 错误1:没有除去文件尾巴的等于号,' = ' 是为空的占位符,不计算在文件大小里面的。
// 错误2:base64长度除于8得到的是21663.75,int类型把小数去掉了,精度不够了。
.
.
.
.
.
研究不易,源码免费,欢迎各位观众老爷 右上角 留言点赞
.
.
.
.
.