嗨我需要从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并将其转换为二进制,然后转换为byte。
我是对的吗?如果是的话怎么办?谢谢
答案 0 :(得分:1)
我认为转化Byte.Parse()
可能就是您所寻找的:http://msdn.microsoft.com/en-us/library/4eszwye3.aspx
答案 1 :(得分:1)
你从字符中得到的字节不是整数
例如,如果你有dataRow[3] = 12
那么在你的情况下,你会得到1和2的字节,如你所见。
你需要使用
BitConverter.GetBytes(Int.Parse(dataRow[3].ToString()));
对于该领域
所以你必须为所有字段执行此操作,然后组合数组。
您可以使用System.Buffer.BlockCopy
。
在this article中有一些例子如何做到
答案 2 :(得分:0)
如果您为字符GetBytes
拨打12
,您将获得两个字节:'1'
和'2'
。如果要获取值为12的字节,则必须先将字符串转换为整数,然后获取其字节。解析字符串中的整数有不同的方法(int.Parse()
或int.TryParse()
是其中两个)。