为什么'BitConverter.GetBytes()'接受'byte'类型的参数并且总是返回一个2字节的数组?

Spa*_*man 8 .net c# bytearray

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

我注意到,我可以类型的变量传递byteBitConverter.GetBytes()(即使它不是在过载列表中列出:参见相关MSDN页)在这种情况下,我总是有一个2字节数组返回值.我不应该将单字节数组作为返回值吗?.NET如何解释字节参数?

样品:

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

Hen*_*man 11

当你查找GetBytes()时,你会发现没有带byte参数的重载.

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

换句话说,你的代码:

byte arg = 0x00;
byte[] byteArr = BitConverter.GetBytes(arg);
Run Code Online (Sandbox Code Playgroud)

相当于:

byte arg = 0x00;
short _temp = arg;
byte[] byteArr = BitConverter.GetBytes(_temp);
Run Code Online (Sandbox Code Playgroud)