我正在使用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/