Ich versuche, eine generische Methode zu schreiben, die jeden Typ von Array in Byte-Array konvertiert.Konvertieren Sie jede Art von Array in Byte [] mit variabler Länge in C#
method definition:
public byte[] convert_item_to_bytes(dynamic items)
{
byte[] bytearr = ??
//I tried blockcopy, but i am not getting the correct number of elements
//Buffer.BlockCopy(items, 0, bytearr, 0, items.Length);
return bytearr;
}
examples of my method calls:
convert_item_to_bytes(new int16[]{0x1234, 0x4567, 0x9574});
convert_item_to_bytes(new int32[]{0x3545, 0x3352, 0x9642, 0x5421});
convert_item_to_bytes(new uint64[]{0x4254, 0x8468});
//etc.... my method calls can also be of float type.
Ich verwende dynamische in der Definition, weil ich den Typ online zur Laufzeit kennen lernen.
PS: Ich sah ein anderes Beispiel, das BinaryFormatter und MemoryStream verwendet. Ich möchte das nicht benutzen. (How to convert byte array to any type)
Gibt es eine andere Möglichkeit, dies zu lösen?
Ich würde in den [BinaryWriter] (https://msdn.microsoft.com/en-us/library/system.io.binarywriter (v = vs.110) .aspx? F = 255 & MSPPError = -2147217396 suchen)/[BinaryReader] (https://msdn.microsoft.com/en-us/library/system.io.binaryreader (v = vs.110) .aspx) Klassen. –
Sie können dies beantworten, wenn Sie wissen, ** wie ** Sie jedes beliebige Objekt in ein Byte-Array "konvertieren" können. Die Prämisse, wie sie ist, ist ziemlich unsinnig, da Sie auf binäre Serialisierung zurückgreifen müssen, und genau dafür ist der BinaryFormatter zuständig. Wenn "irgendeine Art von Array" tatsächlich "irgendeinen numerischen Array-Typ" bedeutet, wird es [etwas einfacher] (https://msdn.microsoft.com/en-us/library/system.bitconverter.getbytes (v = vs. 110) .aspx). – CodeCaster