我需要我的代码来执行类似的操作 - 代码num
中的某个地方获得了一个值,之后我想完全从文件中读取字节,因为字节是数字num
。
例如:如果num是39382,我需要读取39382字节并将其放入字节[] buffer;
在我有这样的东西之前:
ushort num = 0;
//.... num get some value;
byte[] buffer = bRead.ReadBytes(num);
现在我必须更改它,以便num
是UInt32
,但是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。