2013-06-28 15 views
0

我使用convert.tobyte將字符串轉換爲字節。問題是如果數據是:轉換爲字節給出此錯誤:輸入字符串的格式不正確

string data = "5";

byte b = Convert.tobyte(data);工作正常。

但是,如果

string data = "S"

byte b = Convert.tobyte(data);不起作用!

ERROR : Input string was not in a correct format

什麼是錯的,如何解決呢?

注意:我從textbox中提取一個值,所以只有當輸入是數字而非字符時,轉換才起作用。

如何包含字符?

謝謝。

+0

'tobye'不應該是'ToByte'?而「轉換」不是「轉換」國際海事組織。 –

+0

該代碼甚至無法編譯 –

+0

@SonerGönül,它是打字錯誤,我沒有複製。反正我編輯。 – Liban

回答

4

這是Convert.ToByte方法是如何工作的http://msdn.microsoft.com/en-us/library/y57wwkzk.aspx

只有在字符串接受的數字。

你是說將字符串轉換爲字節數組嗎?如果是這樣,使用:

byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(yourString); 

對於僅包含ASCII字符的字符串,陣列的大小將等於您的字符串的長度和在陣列的每個字節將是字符的ord值。如果字符串包含多字節字符,則數組的大小將大於字符串的長度。

+0

你的答案有效,我試圖避免這個數組。有沒有數組的方法? – Liban

+0

沒關係。我想通了。謝謝 – Liban

1

當你不知道,如果字符串類型的變量可以被正確地轉換成一個數字,你需要使用的TryParse家庭的方法,如Byte.TryParse方法

string data = "S"; 
byte b; 
if(byte.TryParse(data, out b)) 
    Console.Writeline("Worked: " + b.ToString()); 

中的TryParse具有的優點是不會引發例外,如果字符串不能轉換爲數字並返回false或true,而out參數如果可能的話用轉換後的值填充。

+0

是的,它不會拋出異常,但它也不起作用。它只是空的 – Liban

+0

那麼如果你需要一個數字的字母'S'不能轉換爲數字,這是答案,而不是如果你需要將字母S的Ascii值轉換爲其相應的數值,那麼你需要答案from @elmovankielmo – Steve

相關問題