在XML文档中的系统之间发送二进制内容的最佳方法是什么
我知道Base64和Hex,真正的区别是什么.我目前正在使用Base64,但需要包含一个外部公共库,因为我认为我可以创建一个函数.
Jon*_*eet 112
您也可以为Base64编写自己的方法......但我通常建议使用外部的,经过良好测试的库.(这不像是它们的短缺.)
Base64和hex之间的区别实际上就是字节的表示方式.Hex是另一种说"Base16"的方式.十六进制将为每个字节取两个字符--Base64每3个字节需要4个字符,因此它比十六进制更有效.假设您正在使用UTF-8对XML文档进行编码,那么100K文件将需要200K以十六进制编码,或者在Base64中编码为133K.当然,你可能不关心空间效率 - 在很多情况下它并不重要.如果它确实重要,那么显然Base64在这方面更好.(有些替代方案效率更高,但它们并不常见.)
use*_*421 21
只有两个"真正的差异":
基数.Base64是base-64,意外,而hex是base-16.
编码:base-64将3个源字节编码为4个base-64个字符(http://en.wikipedia.org/wiki/Base64#Examples); 十六进制将1个字节编码为2个十六进制字符
所以base64比hex更紧凑.
she*_*onh 17
其他答案明确了base16和base64之间的效率差异.
基础选择比效率更多.
Base64使用的不仅仅是字母和数字.不同的实现使用不同的标点字符来指示填充,并且组成64的集合的最后两个字符.这些可以包括加"+"并且等于"=".在HTTP查询字符串中都有问题.
所以支持base16而不是base64的一个原因是base16值可以直接组成HTTP查询字符串而无需额外的编码.这对你很重要吗?
请注意,除了效率之外,这是一个额外的问题.基础本身都不是更好或更差; 它们只是规模上的两个不同点,在这些点上您会发现在不同情况下或多或少具有吸引力的不同属性.
例如,考虑base32.它的效率比base64低20%,但仍适用于HTTP查询字符串.它的大部分低效率来自于对案例不敏感并且避免零"0"和一"1",以及人类繁殖中的错误.
因此base32引入了一个新的关注点; 易于人类繁殖.这对你有用吗?如果不是,你可以选择类似base62的东西,它在HTTP查询字符串中仍然很方便,但是区分大小写,包括零"0"和"1".
希望我已经澄清过,选择你的编码基础是一个按比例滑动的问题,直到你在牺牲对你重要的事情之前获得最佳效率.
维基百科有一个有趣的数字系统列表.
Mit*_*ers 15
我很好奇EARTH base64如何将3个输入字节转换为4个输出字节,仅增加33%的空间增长(而十六进制将1个输入字节转换为2个输出字节,以实现100%的空间增长).为什么特意3个输入字节?
答案是:
3字节= 3 x 8位= 24位.
为什么那个神奇的"24位"号?好吧,base 64代表数字0到63.那些用二进制表示的是什么?用000000(0)到111111(63).
答对了!每个base64字符使用单个输出字节(单个字符,如"Z"等)表示6位输入数据.
所以24位(3个完整字节的输入)/ 6位(base64字母表)= 4个字节的base64.而已!
你可能会想"为什么不是base128(7位输入= 8位输出),编码时只有14%的大小增长?".答案是base64是我们能找到的最好的,因为较低的128个ASCII字符不是全部可打印的.许多是控制字符,如NULL等.
显然有很多方法可以创建其他系统,例如"base81"等,因为如果您创建自定义编码算法,您可以执行任何操作.但是base64的优点在于它如何以6位的块干净地编码数据.因此编码方案变得流行.
阅读本文后,现在你有希望更聪明了.
尺寸对你很重要吗?
Base64 更节省空间。使用 4 个字符表示 3 个字节,而十六进制为每个字节使用 2 个字符。换句话说:十六进制将字符串的大小增加 100%。对于适合作为 url 请求中的参数的小字符串,我不介意额外的成本/大小。
易用性对您来说重要吗?
Hex 比 Base64 更容易使用,因为在 url 请求中使用字符串作为 get 参数时不需要转义(它可能包含+, =and /)。
广泛使用对您来说重要吗?
我没有数字,但根据几个因素,一般开发人员可能比十六进制更了解 Base64。我早在十六进制(base16)之前就知道base64。
base64具有较少的开销(base64为原始数据的每3个字节产生4个字符,而hex为原始数据的每个字节产生2个字符).十六进制更具可读性 - 您只需查看两个字符并立即知道后面有什么字节,但使用base64需要努力解码4个字符的组,因此使用十六进制调试会更容易.
| 归档时间: | 
 | 
| 查看次数: | 44646 次 | 
| 最近记录: |