需要在 byte[] 中包含 0

本文关键字:包含 byte | 更新日期: 2023-09-27 17:56:12

我正在研究 c# 中的压缩算法,它要求我将 IntX 数字分解为 byte[]。

现在,我面临的问题是:这是数字:111100000222

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

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

如您所见,它忽略了中间的所有 0,这些 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;
} 

需要在 byte[] 中包含 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。