8位字节转7位字节(Base256转Base128)Howto从8位字节字节转换为7位字节(Base256到Base128)我想做这样的事情:知道base64可用,但它过多地扩展了字节数组。Base64对每个字符编码6位,从而生成一个可以轻松可靠地传输的字符串(模数要小心URL)。没有具有相同属性的7位字母表-例如,如果给出控制字符,许多系统将失败。您绝对确定不需要通过任何此类系统(包括存储)吗?这种额外的微小空间节省是否真的足以证明必须担心某些东西是否会将“n”更改为“rn”或反之亦然,或者丢弃字符0?(对于存储示例,2100字节=base64中的2800个字符,或base128中的2400个字符。不一样的IMO。)我强烈建议您查看是否可以找到额外的存储空间-它可能会在以后为您省去很多麻烦。你在寻找UTF-7吗?或者,有一个ASCIIEncoding类将UTF-8字符串转换为8位字节数组,丢弃不能用7位ASCII表示的字符。很难确定您要从您的问题中获得什么(就目前而言)。您是在尝试进行base-128编码,还是在尝试将表示7位数字的一系列(可能是十六进制)数字转换为相当于8位数字的二进制数?我刚才描述的编码是ID3v2标记格式中使用的编码,用于对标头中的大小字段进行编码。如果这就是您要实现的目标,那么下面的代码可能可以解决问题。它基于ID3规范中的'257'例子:以上是C#学习教程分享的全部内容:Howtoconvertfrom8-bitbytesto7-bitbytes(Base256toBase128),如果它对大家有用,需要了解更多C#学习教程,希望大家多多关注—[Test]publicvoidGetInt(){varbytes=newbyte[]{0,0,2,1};变种结果=0;foreach(varbinbytes){结果();for(varj=0;j>=7;}Assert.That(bytes.Pop(),Is.EqualTo(0));Assert.That(bytes.Pop(),Is.EqualTo(0));断言.That(bytes.Pop(),Is.EqualTo(2));Assert.That(bytes.Pop(),Is.EqualTo(1));}本文收集自网络,不代表立场。如涉及侵权,请点击维权联系管理员删除,如需转载请注明出处:
