这里是否缺一个转换函数?

foxd 2011-09-05 04:18:06
winform程序。
我在程序中需要需要调用一个外部模块,它提供了WriteByte()如下:
[DllImport("kpci800.dll")]
private static extern void WriteByte(Int32 iIndex, char iAddr, char iByte);
其中,第一、第二个参数是固定的,第三个参数是一个字节。
我用:WriteByte(0, '0', '1');执行很正常,但若我想用16进制的2Ah作为第三个参数时就不知道该如何写了,2Ah对应的10进制数为43,无论我用:WriteByte(0, '0', '2A'); 或者WriteByte(0, '0', '42');都会报错:"字符文本中的字符太多"。是否这里需要一个转换函数?那请问怎样把诸如:2Ah或者42这样的值正确地写入该语句呢?谢谢!
...全文
54 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
feixuyue 2011-09-05
  • 打赏
  • 举报
回复
我弄错了
WriteByte(0, '0', char(2Ah))
是vb.net里面的chr和chrw,


[Quote=引用 1 楼 feixuyue 的回复:]
WriteByte(0, '0', char(2Ah));
试一下,我也不晓得
[/Quote]
pupo 2011-09-05
  • 打赏
  • 举报
回复
WriteByte(0, '0', (char)0x2A);
vrhero 2011-09-05
  • 打赏
  • 举报
回复
另外...你的声明可能有问题,改成 byte iAddr,byte iByte 试试...

.NET中char是双字节UTF-16,和C/C++的定义是两码事...
孟子E章 2011-09-05
  • 打赏
  • 举报
回复
char[] x = "2Ah".ToCharArray();
for(int i=0;i<x.Length;i++)
WriteByte(0, '0', x[i])
vrhero 2011-09-05
  • 打赏
  • 举报
回复
(char)0x2A or (char)42...

char就是数字...
feixuyue 2011-09-05
  • 打赏
  • 举报
回复
WriteByte(0, '0', char(2Ah));
试一下,我也不晓得

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧