0

嗨,我需要从 excel 单元格中读取一个 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);

并对其进行调试,我得到了 excel 单元格中数字 12 的两个字节。这意味着它将 12 视为字符串并将 1 作为一个字节返回,将 2 作为另一个字节返回。我假设我需要使用它Int.Parse()来将 12 视为一个 int 并将其转换为二进制,然后再转换为字节。

我对吗?如果是怎么办?谢谢

4

3 回答 3

1

我认为转换Byte.Parse()可能是您正在寻找的:http: //msdn.microsoft.com/en-us/library/4eszwye3.aspx

于 2013-08-05T20:12:06.620 回答
1

you are getting the bytes from the characters not the ints for example if you have dataRow[3] = 12 then in your case you will get the bytes for 1 and 2 as you saw.

you need to use BitConverter.GetBytes(Int.Parse(dataRow[3].ToString())); for the field

so you have to do this for all the fields and then combine the arrays. you can use System.Buffer.BlockCopy for that. in this article there are some examples how to do that

于 2013-08-05T20:14:20.317 回答
0

如果您调用GetBytes字符串12,您将获得两个字节:'1'and 和'2'. 如果要获取值为 12 的字节,则必须先将字符串转换为整数,然后再获取它的字节。有多种方法可以从字符串中解析整数(int.Parse()或者int.TryParse()其中两种)。

于 2013-08-05T20:16:48.407 回答