Ich verwende Convert an array of different value types to a byte array Lösung für meine Objekte zur Byte-Array-Konvertierung.C# Objekt [] in Byte [] konvertieren, aber wie Byte-Objekt als Byte beibehalten?
Aber ich habe ein kleines Problem, das ein großes Problem verursacht.
Es gibt "Byte" Art von Daten in den Mitten des Objekts [], ich weiß nicht, wie man "Byte" behält, wie es ist. Ich brauche die gleiche Anzahl Bytes vorher und nachher.
Ich habe versucht, add "Byte" Typ in das Wörterbuch wie folgt aus:
private static readonlyDictionary<Type, Func<object, byte[]>> Converters =
new Dictionary<Type, Func<object, byte[]>>()
{
{ typeof(byte), o => BitConverter.GetBytes((byte) o) },
{ typeof(int), o => BitConverter.GetBytes((int) o) },
{ typeof(UInt16), o => BitConverter.GetBytes((UInt16) o) },
...
};
public static void ToBytes(object[] data, byte[] buffer)
{
int offset = 0;
foreach (object obj in data)
{
if (obj == null)
{
// Or do whatever you want
throw new ArgumentException("Unable to convert null values");
}
Func<object, byte[]> converter;
if (!Converters.TryGetValue(obj.GetType(), out converter))
{
throw new ArgumentException("No converter for " + obj.GetType());
}
byte[] obytes = converter(obj);
Buffer.BlockCopy(obytes, 0, buffer, offset, obytes.Length);
offset += obytes.Length;
}
}
gibt es keine Syntext beschweren, aber ich diesen Code verfolgt, nachdem das Programm
ausgeführtbyte[] obytes = converter(obj);
das Original " Byte "wird zu Byte [2].
Was passiert hier? Wie kann der Byte-Wert in dieser Lösung authentisch bleiben?
Danke!
Es ist nicht klar, was hier passiert. Können Sie den Code, der das Objekt erstellt, sowie den Code, der es entpackt, anzeigen? – cdhowie
Sie erhalten ein Array, weil 'GetBytes' ein Array zurückgibt. Was genau willst du hier machen, weil es nicht klar ist? –
Ich habe meinen ursprünglichen Post aktualisiert. Ich weiß, dass GetBytes ein Array zurückgibt, aber ich möchte das Byte [1] für meinen ursprünglichen Byte-Wert zurückgeben. –