我正在使用BitConverter.GetBytes()将各种变量(不同类型)转换为字节数组,将其传递给自定义方法,我需要检查每个字节的值.
我注意到,我可以类型的变量传递byte到BitConverter.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)