Konvertieren byte [], um sbyte[]

Ich habe versucht, zu konvertieren, ein Array von byte[] zu sbyte[].

Hier ist mein Beispiel-Array:

byte[] unsigned = { 0x00, 0xFF, 0x1F, 0x8F, 0x80 };

Ich schon so probiert:

sbyte[] signed = (sbyte[])((Array)unsigned);

Aber es funktioniert nicht. Es gibt keinen Wert im array nach dieser operation.

Hat jemand eine bessere Idee?

  • Dieser code funktioniert in dem Sinne, dass es kompiliert und wirft keinen Fehler. Es Ergebnisse in ein array, das verwendet werden kann, wie sbyte[] in fast jeder situation, aber es ist immer noch gekennzeichnet als byte[] von der Laufzeit. Nicht sicher, was du meinst mit "es ist kein Wert in dem array", für mich ist das array ist {0, -1, 31, -113, -128} als erwartet.
  • Nach dem kompilieren gibt es keinen Wert in der signierten array. Visual Studio zeigt "?" in jedem element der signierten array.
  • Ok, ich versuche, zu bekommen ein element aus der unterzeichnete array und es funktioniert immer noch. Vielen Dank für Ihre Hilfe. Ich versuche es mal mit dieser Lösung.
  • Dann ist das ein VS-Beschränkung. VS kann nicht verstehen, dass ein array mit statischer Typ sbyte[] aber eine dynamische geben byte[] gültig ist. Die CLR erlaubt es diese Form, aber in C# nicht. Dies ist ein hack, so in den meisten Anwendungen werden Sie verwenden möchten @Selman ' s Vorschlag.
  • Es ist nur der debugger hat Probleme mit dem anzeigen, da es wirklich ein sbyte[] Verweis auf eine byte[].
  • So etwas wie (sbyte[])(object)ubytes als Sie versucht haben, funktioniert einwandfrei, sieht einfach komisch in den debugger.
  • Keine Notwendigkeit zu löschen, die die ganze Antwort. Der zweite Teil ist richtig, obwohl ich lieber sbyte[] signed = Array.ConvertAll(unsigned, x => unchecked((sbyte)x)); also es funktioniert auch, wenn überprüft Arithmetik aktiviert ist.
  • Warum beantworten Sie die Frage unter Verwendung Kommentare?

InformationsquelleAutor REMberry | 2014-09-10
Schreibe einen Kommentar