2013-08-05 77 views
0

您好我需要讀取Excel單元格中的int和一個字節的發送,但是當我用這個代碼做到這一點:字符串INT以字節

cert1 = Encoding.Default.GetBytes(
    "write" + flg + 
    dataRow[3].ToString() + 
    dataRow[4].ToString() + 
    dataRow[5].ToString().Substring(0,4) + 
    dataRow[5].ToString().Substring(5,2) + 
    dataRow[5].ToString().Substring(8,2) + 
    dataRow[6].ToString() + 
    dataRow[7].ToString() + 
    dataRow[8].ToString() + 
    dataRow[10].ToString().Substring(0, 4) + 
    dataRow[10].ToString().Substring(5, 2) + 
    dataRow[10].ToString().Substring(8, 2) + 
    dataRow[11].ToString()); 
comport.Write(cert1, 0, cert1.Length); 

並調試它,我獲得第二字節12在excel中。這意味着它認爲12作爲字符串,並返回1作爲一個字節和2作爲另一個。我假設我需要使用Int.Parse()將12看作一個int,並將其轉換爲二進制,然後將其轉換爲字節。

我對不對?如果是的話該怎麼辦?由於

+6

你的問題很不清楚,你的代碼很可能是錯的。你想達到什麼目的? – SLaks

+1

如果您只有一個字節可用,那麼您將能夠表示的最大可能數字爲255(假設爲無符號整數)。 –

+0

我有一個excel文件,其中包含一些具有整數值的單元格。我想讀取excel併發送到串口,所以我需要將它們轉換爲字節。我從excel中讀取沒有任何問題,併發送到串口沒有問題。我使用'GetBytes()',它給了我兩個字節的整數12但我想發送一個字節。怎麼做? – user2628363

回答

1

,你都可以從字符的字節不能例如,如果你有dataRow[3] = 12 那麼整數 你的情況,你會得到你看到的1和2的字節。

你需要使用 BitConverter.GetBytes(Int.Parse(dataRow[3].ToString())); 田間

所以你必須對所有的領域做到這一點,然後再結合陣列。 你可以使用System.Buffer.BlockCopy。 在this article也有一些例子,說明如何做到這一點

0

如果調用GetBytes字符串12你會得到兩個字節:'1'和和'2'。如果你想得到一個值爲12的字節,你必須首先將字符串轉換爲整數,然後得到它的字節。有不同的方法來解析字符串中的整數(其中兩個是int.Parse()int.TryParse())。