2013-12-17 25 views
3

0領先我最近得到的回答爲ASCII字符串轉換爲二進制....缺少對二進制轉換

byte[] inVAR = System.Text.Encoding.ASCII.GetBytes(textBox1.Text); 

textBox2.Text = string.Join("", inVAR.Select(b => Convert.ToString(b, 2))); 

這只是需要從BOX1文本,並把二進制相當於BOX2。

我的問題是,二進制中的前導0缺失。

例如:「A」給「1000001」,而不是「01000001」

我想我可以每個字符手動附加有前導零,但恐怕這可能會破壞某些文字上應該有啓動「1」或已經是8位數字。

任何想法?

回答

4

您可以使用PadLeft追加字符正確的號碼。如果你已經有8個字符,那什麼都不會做。如果你少了,它會增加0使它成爲8個字符。

textBox2.Text = string.Join("", inVAR.Select(b => Convert.ToString(b, 2) 
    .PadLeft(8, '0'))); 
3

您可以添加前導零到每個陣列中的字節:

textBox2.Text = string.Join("", inVAR.Select(b => 
    Convert.ToString(b, 2).PadLeft(8, '0'))); 

如果添加零到結果字符串的整體,也可能是錯的,如果在低於單個字節結果之一8個字符。

4

你可以使用PadLeft

string.Join("", inVAR.Select(b => Convert.ToString(b, 2).PadLeft(8, '0'))); 
+2

我覺得'PadLeft'應該在'Select'裏面 – CodesInChaos

+1

爲什麼要鏈接到法文版本的文檔? – MAV

+0

默認搜索結果。糾正。它是如此美麗的語言;) –