如何使用二进制阅读器读取UINT32字节数



我需要我的代码来执行类似的操作 - 代码num中的某个地方获得了一个值,之后我想完全从文件中读取字节,因为字节是数字num

例如:如果num是39382,我需要读取39382字节并将其放入字节[] buffer;

在我有这样的东西之前:

ushort num = 0;
//....  num get some value;
byte[] buffer = bRead.ReadBytes(num);

现在我必须更改它,以便numUInt32,但是ReadBytes不起作用(因为它想要INT32)。超过INT32是可能的"数字"。我这样修复了它:

byte[] buffer = new byte[num];
for (int j = 0; j < num; j++)
{
    buffer[j] = bRead.ReadByte();
}

它有效,但我想知道这是最好的方法吗?或者还有另一个?

如果您确定NUM不会超出INT32 MAX,则可以使用以下内容:

UInt32 num = 0;
//....  num get some value;
bRead.ReadBytes(checked((int)num));

,如果NUM超出了签名的32位最大

,这将抛出溢出式感应。

您可以使用:

public static ushort ToUInt32(
    byte[] value,
    int startIndex
)

您指定源数组和编码号启动的位置。如果您的字节数组包含一个数字,则startIndex为0,长度必须至少为4。

最新更新