2012-05-29 40 views
0

我跑了一些問題,當我嘗試這樣做:C#錯誤的編碼

public byte[] Login() 
    { 
     return Encoding.ASCII.GetBytes("WA\x01\x00\x00\x19\xf8\x05\x01\xa0\x8a\x84\xfc\x11iPhone-2.6.7-5222\x00\x08\xf8\x02\x96\xf8\x01\xf8\x01\x7e\x00\x07\xf8\x05\x0f\x5a\x2a\xbd\xa7"); 
    } 

這些字節\x8a\x84同時獲得編碼,以\xbf\xbf我不想要什麼。我已經嘗試使用默認編碼,UTF和Unicode,但他們都不提供我所需要的。

這是一個套接字客戶端。

回答

3

,但他們都沒有提供什麼,我需要

嗯,我們不知道你真正需要。

如果你想獲得字節值0x8a0x84那麼我建議你避免使用文本入手 - 它看起來並不像這真的擺在首位的所有文本數據。它看起來像有可能位在它的文字,你可以使用一個編碼的那些方面,否則當你想固定二進制數據,應指定爲字節,而不是解碼「文本」,這ISN真的沒有文字。

它,使用Encoding.GetEncoding(28591)(ISO-8859-1),你會得到什麼你期待可能,但它仍然不是你應該做什麼。

+0

'「WA \ X01 \ X00 \ X00 \ X19 \ XF8 \ X05 \ X01 \ XA0 \ x8a \ X84 \ XFC \ x11iPhone-2.6.7-5222 \ X00 \ X08 \ XF8 \ X02 \ X96 \ xf8 \ x01 \ xf8 \ x01 \ x7e \ x00 \ x07 \ xf8 \ x05 \ x0f \ x5a \ x2a \ xbd \ xa7「'應該完全一樣,但是應該是字節。 – Moritz

+0

Encoding.GetEncoding(28591).GetBytes碰到它。謝謝! – Moritz

+2

@Moritz:但是,這不是正確的做法,正如我之前所說的那樣。基本上,你不*試圖表示Unicode U + 008A(控制字符「line tabulation set」) - 你試圖表示* byte * 0x8a。所以不要把它放入文本中。 –

1

ASCII沒有在上面值127

定義我想知道爲什麼你使用一個字符串中介字節轉換爲字節。

你可以,而是做這樣的事情,總之解決這個問題。

Encoding.ASCII.GetBytes("WA") 
.Concat(new byte[] { 1, 2, 3, 4, 5 }) 
.Concat(Encoding.ASCII.GetBytes("iPhone-2.6.7-5222")) 
.Concat(new byte[] { 6, 7, 8, 9, 10 }) 
.ToArray() 
+1

「我已經嘗試使用默認編碼,UTF和Unicode,但它們都不提供我需要的內容。」 –

+1

謝謝喬恩。沒有看到。 – Squirrelsama