我正在使用c#中的压缩算法,它要求我将IntX数字分解为byte []。
现在,我面临的问题是: 这是数字: 111100000222
当我将其分解为byte []时,它会分解为
byte[0] = 111
byte[1] = 100
byte[3] = 222
正如你所看到的,它忽略了中间的所有0,它可以保留一个字节
正确的字节[]应该是
byte[0] = 111
byte[1] = 100
byte[3] = 000222
有什么方法,操作我可以处理这个,所以我可以将我的byte []传递给方法,我想要0也被认为
非常感谢任何帮助
我的方法接受这个:
public byte[] REncode(IEnumerable<byte> data)
{
ResetEncoder(new EncodeModel(256));
foreach (byte b in data)
EncodeSymbol(b);
EncodeSymbol(model.EOF);
FlushEncoder();
return writer.Data;
}
答案 0 :(得分:0)
根据您在问题和评论中所写的内容,您的算法似乎存在一个重大缺陷。值000222相当于222作为字节。绕过它的一种方法是使您的算法执行如下操作:
byte[0] = 111
byte[1] = 100
byte[3] = 000 // Is in fact 0
byte[4] = 222
这种方式当你建立时你会得到11110000222,然而,这是大缺陷的来源。考虑2个数字1002和100002.您的算法将给出
byte[0] = 100
byte[1] = 002 // Is in fact 2
这两个数字的上述值是相同的,当你建立它时,两者都会得到1000002,而不是1002和100002。