2010-05-27 71 views
6

假設我想在.Net字符串中使用ASCII特殊字符FS(0x1C),然後能夠使用特殊字符從相同字符串格式化字節數組正確表示爲單個字節,我該怎麼做?我似乎無法擺脫它的困擾。如何在.Net字符串中編寫ASCII特殊字符

感謝您提供任何幫助。

+0

在回答你的問題之前,我想知道你爲什麼試圖將字符串轉換爲字節數組。 – 2010-05-27 15:38:44

+0

我正在寫一個函數來解析來自串口的字節數組,但此刻我正在工作,並且沒有任何實際的數據要測試。由於我的文檔顯示了我可以創建自己的數據的格式,我只想將它寫成.Net字符串,將其轉換爲字節數組,然後使用我的函數對其進行解析。但也許有更好的辦法。我也願意就此提出建議。 – JimDaniel 2010-05-27 15:43:48

回答

3

它,而取決於串口數據格式的性質。如果數據主要由散佈偶爾的控制字符的ASCII文本字符組成,那麼你可以將它們嵌入到字符串中,例如,

var data1 = Encoding.ASCII.GetBytes("Foo\x1CBar\x1CBaz"); 

然而,如果數據包括各種數據類型的幾個字段,那麼BitConverter類可能更加有用的,例如

var data2 = new List<byte>(); 
// Add an int value 
data2.AddRange(BitConverter.GetBytes(6)); 
// Add a control character 
data2.Add(0x1C); 
// Add an ASCII-encoded string value 
data2.AddRange(Encoding.ASCII.GetBytes("Hello")); 

正如其他人所指出的那樣,ASCII是不編碼,你可以使用的唯一的字符串,而是從一個串口它是最有可能的。

+0

謝謝,BitConverter在我的情況下會很有用。 – JimDaniel 2010-05-27 16:31:00

3

這裏是如何把它嵌入在一個字符串:

"\x1C" 

那是單個字符的字符串表示。假設你希望把它弄出來的字節數組:

byte[] bytes = Encoding.ASCII.GetBytes("\x1C"); 

如果你想從字節數組得到一個字符串:

string s = Encoding.ASCII.GetString(bytes); 

注意,也有更多的編碼,像UTF8,在Encoding命名空間中,根據你的需要可能會更好地工作 - 儘管從串行線讀取,你可能需要純ASCII。

+0

這就是我想念的,謝謝! – JimDaniel 2010-05-27 15:55:26