我正在使用BitConverter.GetBytes()将各种变量(不同类型)转换为字节数组,并将其传递给需要检查每个字节值的自定义方法。

我注意到,我可以将byte类型的变量传递给BitConverter.GetBytes()(即使未在“过载列表”中列出:see related MSDN page),在这种情况下,我始终将2字节数组作为返回值。
我不应该将单字节数组作为返回值吗? .NET如何解释byte参数?

样本:

byte arg = 0x00;
byte[] byteArr = BitConverter.GetBytes(arg);
// Result: byteArr is a 2-bytes array where byte[0] = 0 and byte[ 1] = 0

最佳答案

当您查询GetBytes()时,您会发现没有使用byte参数的重载。

您正在查看最匹配的结果GetBytes(Int16),当然会产生一个byte[2]

换句话说,您的代码:

byte arg = 0x00;
byte[] byteArr = BitConverter.GetBytes(arg);

等效于:
byte arg = 0x00;
short _temp = arg;
byte[] byteArr = BitConverter.GetBytes(_temp);

关于c# - 为什么 'BitConverter.GetBytes()'接受 'byte'类型的参数并总是返回2个字节的数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19432426/

10-10 13:50