Ich verwende BitConverter.GetBytes()
, um verschiedene Variablen (verschiedener Typen) in ein Bytearray umzuwandeln, um es an eine benutzerdefinierte Methode zu übergeben, wo ich den Wert jedes Bytes überprüfen muss.Warum 'BitConverter.GetBytes()' akzeptiert Argument des Typs 'Byte' und gibt immer ein 2-Byte-Array zurück?
Ich habe bemerkt, dass ich byte
-BitConverter.GetBytes()
eine Variable vom Typ passieren kann (auch wenn es nicht in der Überladungsliste aufgeführt ist: see related MSDN page) und in diesem Fall hat ich immer einen 2-Byte-Array als Rückgabewert. Sollte ich nicht ein Single-Byte-Array als Rückgabewert haben? Wie interpretiert .NET das Byteargument?
Probe:
byte arg = 0x00;
byte[] byteArr = BitConverter.GetBytes(arg);
// Result: byteArr is a 2-bytes array where byte[0] = 0 and byte[ 1] = 0
Die Probe mit 'arg interessanter sein würde! = 0x00' –
Wie die Antworten besagt, sind Sie die Ergebnisse einer impliziten Umwandlung von' byte' zu sehen "kurz". Hier ist die Liste der vordefinierten impliziten numerischen Konvertierungen in C#: http://msdn.microsoft.com/en-us/library/y5b434w4(v=vs.110).aspx –
Die Framework-Designer gingen davon aus, dass Sie keine Konvertierung benötigen ein Byte zu einem Byte. –