sprintf in C#?
Gibt es etwas ähnliches wie sprintf()
in C#?
Ich würde zum Beispiel gern zum konvertieren einer Ganzzahl in eine 2-byte-byte-array.
Etwas wie:
int number = 17;
byte[] s = sprintf("%2c", number);
InformationsquelleAutor der Frage Markus Johansson | 2008-11-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die erste 0 bedeutet "das erste argument" (also der Zahl), die 00 nach dem Doppelpunkt ist der Formatbezeichner (2 Ziffern).
Beachten Sie jedoch, dass .NET strings sind UTF-16, also ein 2-Zeichen-Zeichenfolge aus 4 bytes, nicht 2
(edit: Frage geändert von
string
zubyte[]
)Um die bytes verwenden
Encoding
:(natürlich in verschiedenen Codierungen können zu unterschiedlichen Ergebnissen führen; UTF-8 2 bytes für diese Daten)
Eigentlich eine kürzere version des ersten Bits ist:
Aber die
string.Format
version ist flexibler.InformationsquelleAutor der Antwort Marc Gravell
EDIT: ich gehe davon aus, dass Sie möchten, konvertieren Sie den Wert von einem integer in ein byte-array und nicht den Wert in einen string umgewandelt, und erst dann ein byte-array (überprüfen Sie marc ' s Antwort für das letztere.)
Konvertieren eines int in ein byte-array, das Sie verwenden können:
aber es wird geben Sie ein array mit 4 Byte und nicht 2 (da ein int ist 32 bit.)
Um ein array aus 2 bytes, die Sie verwenden sollten:
Wenn Sie wollen einfach nur konvertieren Sie den Wert 17 zu zwei Charaktere dann verwenden:
Aber, wie marc darauf hingewiesen, das Ergebnis wird verbraucht 4 bytes, da jedes Zeichen in .NETTO ist 2 bytes (UTF-16) (einschließlich der zwei bytes, die die Länge der Zeichenfolge es werden 6 bytes).
InformationsquelleAutor der Antwort Yona
Es stellte sich heraus, dass das, was ich wirklich wollte, war dies:
Der Schlüssel ist hier die Write-Funktion der BinaryWriter-Klasse. Es hat 18 überlastungen, die Umwandlung von verschiedenen Formaten in ein byte-array schreibt es in den stream. In meinem Fall habe ich um sicherzustellen, dass die Zahl, die ich schreiben möchte, ist gehalten, in einem short-Datentyp, wird die Write-Funktion schreiben 2 bytes.
InformationsquelleAutor der Antwort Markus Johansson