C# 需要在字节[]中包含0

C# 需要在字节[]中包含0,c#,C#,我正在用c#编写一个压缩算法,它要求我将一个IntX数字分解为字节[] 现在,我面临的问题是: 这是电话号码: 11110000222 当我将其分解为字节[]时,它会分解为 byte[0] = 111 byte[1] = 100 byte[3] = 222 正如你所看到的,它忽略了中间的所有0个,这可能有一个字节 正确的字节[]应显示为 byte[0] = 111 byte[1] = 100 byte[3] = 000222 有没有办法,我可以处理这个,这样我就可以把我的字节[]传递给这个方

我正在用c#编写一个压缩算法,它要求我将一个IntX数字分解为字节[]

现在,我面临的问题是: 这是电话号码: 11110000222

当我将其分解为字节[]时,它会分解为

byte[0] = 111
byte[1] = 100
byte[3] = 222

正如你所看到的,它忽略了中间的所有0个,这可能有一个字节

正确的字节[]应显示为

byte[0] = 111
byte[1] = 100
byte[3] = 000222
有没有办法,我可以处理这个,这样我就可以把我的字节[]传递给这个方法,我希望也考虑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;
} 
public byte[]REncode(IEnumerable数据)
{
重置编码器(新编码器型号(256));
foreach(数据中的字节b)
编码符号(b);
编码符号(model.EOF);
FlushEncoder();
返回writer.Data;
} 

根据您在问题和评论中所写的内容,您的算法似乎存在一个重大缺陷。值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。

我将数字分解,直到下一个数字超过一个字节。比如说,数字是12345,我的字节[]将是字节[0]=123字节[1]=45,因为字节[1]不能容纳1234,因为它超过256,所以我必须将剩余的变量传递给下一个索引,这样才有意义?@ShobhitMaheshwari展示了你用来构造字节[]的方法。试试看,这看起来是一种非常奇怪的数字表示方式。如果号码是
333
,你会怎么做?为什么你要关注小数点?请将其添加到问题中,而不是添加到注释中!!