2008-11-12 31 views
12

Onaltılı gösterimdeki bir çıkış dizisi dizisini nasıl oluştururum?C# Onaltılı gösterim dizesi oluştur

Örnek:

Ben (bu örnek 1B)

string s = "\x" + "1B"; // Unrecognized escape sequence 

böyle 00 ile FF arasında onaltılık-değerlerine sahip dizeleri inşa etmek mümkün istiyorum

string s = "\x1A"; // this will create the hex-value 1A or dec-value 26 

Belki yapma başka bir yol olduğunu Onaltılı dizeler ...

+0

Anladığımı sanmıyorum - bu örnekte ansi kodu 26 ile tek bir karaktere sahip olmak ister misiniz? – Grzenio

+0

\ x ve \ u her ikisi de unicode karakterler için kaçış dizileridir. '' u3A9 '' ve '' \ x03A9 '', hem konsol çıkışında omaga ('Ω') sembolü basar. – RBT

cevap

19

Onaltılık değerleri dizelerde saklamıyorsunuz.

Bunu yapabilirsiniz, ancak bu bir dizedir ve değerinin gerçekten okunması için bir tamsayıya veya bayt'a gönderilmesi gerekir. dizenizle içine literal bir onaltılık geçmek Yani

Byte value = 0x0FF; 
int value = 0x1B; 

, onun kolayca mümkün:

Bir int veya olsa bir bayt bir değişmez olarak onaltılık değerini atayabilirsiniz

string foo = String.Format("{0} hex test", 0x0BB); 

Hangi Bu dize "126 hex testi" oluşturur.

Ama senin istediğin bu değil mi?

+0

Teşekkürler, Byte açıklama tam istediğim gibiydi – humcfc

3

Onaltılık 16 bit unicode karakter kodları için bir '\ u' çıkış kodu var.

Console.WriteLine("Look, I'm so happy : \u263A"); 
29

Lütfen \x çıkış sırasından kaçmayı deneyin. Okuması zor çünkü durduğu yerde veriye bağlı. Mesela, bu iki ip arasında bir bakışta ne kadar fark var? İlkinde

"\x9Good compiler" 
"\x9Bad compiler" 

, "\ x9" sekmesi - 'G' geçerli onaltılık karakter olmadığı için çıkış sırası orada durur. İkinci dizgede "\ x9Bad" bir kaçış dizisi olup, sizi rastgele bir Unicode karakteri ve "derleyici" ile bırakıyor.

Bu (... sen \t kullanmak isterdim ama ne demek istediğimi görmek umut sekme için tabii)

"\u0009Good compiler" 
"\u0009Bad compiler" 

:

Sana u yerine dizisi kaçış \ kullanmanızı öneririz tabii orijinal soru bir yana, ama bu zaten cevaplanmıştı :)