需要在byte []中包含0

时间:2016-07-11 07:13:59

标签: c#

我正在使用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;
} 

1 个答案:

答案 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。