2016-12-12 1 views
-2

Drucken Ich muss eine string mit der hexadecimal code einer int speichern.Hexadezimal-Code von Int in Zeichenfolge

Zum Beispiel ist der hexadecimal Wert für die int 15xoooF.

Mein Problem ist, dass ich diesen Code zu speichern haben in einem string wie folgt aus:

int myint = myStringLength; //this value might change 
string myIntExhCode = myint.convertThisIntoMyCode(); 

//and the string has to be exactly "/xoooF" 

So in dieser Frage, die ich zwei problmes haben:

  • Die erste ist, wie automatisch zu konvertieren eine int in die hexadecimal code wie 15 = xoooF

  • Die zweite ist wie Erstellen Sie eine Zeichenfolge, die \xoooF enthält, weil jeder Versuch, solche Zeichenfolgen zu verketten, zu einer \\xoooF führte, und dies ist nicht korrekt, da ich in der Ausgabe die string in die ascii code konvertiert werden muss.

Wie kann ich diese beiden Aufgaben erfüllen?

Jede Hilfe wird

+0

'000F == 15.ToString ("X4")' –

+1

wollen Sie 'O's oder' 0's? Weil der hexadezimale Wert von "15" "000F" ist, nicht "oooF". –

+1

Meinst du Schrägstrich oder Backslash? Es ist wahrscheinlich, dass Sie eigentlich den umgekehrten Schrägstrich und nicht den Schrägstrich meinen. In diesem Fall zeigt der Debugger einen einzelnen umgekehrten Schrägstrich an, der mit einem weiteren umgekehrten Schrägstrich versehen ist, so dass es aussieht, als wären es zwei. Es ist jedoch nur ein einzelner Backslash. –

Antwort

2

Ihre Frage recht vage. Wenn Sie möchten, hexadezimal-Format, aber mit 0 (Ziffer Null) geändert in o (kleine lateinische Buchstaben o) können Sie implementieren, sagen wir, ein Erweiterungsmethode (um Ihre vorgeschlagenen Code intakt zu halten):

public static partial class IntExtensions { 
    public static string convertThisIntoMyCode(this int value) { 
    return "\\x" + value.ToString("X4").Replace('0', 'o'); // or "/x" + ... 
    } 
} 

...

int myint = myStringLength; //this value might change 
string myIntExhCode = myint.convertThisIntoMyCode(); 

// Test output 
Console.Write(myIntExhCode); 
+0

Verwenden Sie eine 'partielle Klasse' für Erweiterungsmethoden? –

+0

@Jeppe Stig Nielsen: Ich verwende oft 'partielle Klasse' für die Erweiterungsmethoden, insbesondere für die Erweiterungsmethode. auf * populären * Typen (wie 'int'), wenn wir erwarten, dass es eine andere Reihe von Erweiterungen gibt/ –

+0

Das ist interessant. Wenn ein weiterer Satz von Erweiterungen benötigt wird, können Sie auch einfach eine separate (nicht-partielle) Klasse für sie erstellen. Ich sehe kein Problem damit. Die verschiedenen Klassen für Erweiterungen von "int" könnten sich in verschiedenen Namespaces befinden, falls gewünscht. Wenn Sie denselben Namespace verwenden möchten, verwenden Sie einfach andere Klassennamen. –

1

geschätzt werden Wie wäre es

int i = 15; 
string result = "\\x" + i.ToString("X").PadLeft(4, 'o'); 
+0

Ich versuchte die '"/x + string "-Formel, aber das Ergebnis, das herauskam, war' "// xooF" '. Gibt es eine Möglichkeit, die doppelte/aus der Zeichenfolge zu entfernen? –

+0

Ich bezweifle sehr, dass es herauskam als '// xooF', da Vorwärts Schrägstriche überhaupt nicht maskiert sind. Ich bezweifle, dass Vorwärts Schrägstriche sind, was sowieso erforderlich ist ... –

+0

@JonSkeet meine Schuld habe ich nur die _the Zeichenfolge muss genau kopiert werden"/xoooF "_ von OP – fubo

Verwandte Themen