最近调用同事vc写的dll,dll函数参数为(char * xxx,xxx),我在c#调用用string传入数据和stringbuiler传出数据一切都正常。
现在遇见怎么一个问题,就是在调用这个dll进行处理的时候,如果我要发255字节来处理,都是先将字节数组getstring转化为字符串。但是在发送过程中,我打断点看到有很多'/0'的转译字符,还有另外一个接收端调用这个dll来接收这个数据,就用stringbuilder收到这个字符串,但是在收端我发现,字符串中数据都已经被截断了"sjhg\0\0\0\0\0\djskjdh\00\0\0\0\0\",只有前面的""sjhg"4个字节的数据,收到就不对。是不是在收发时不能使用字符串这种类型,正确应该用什么类型呢?关键要能和vc dll的 char *能传过去,请教诸位大侠了,急!
现在遇见怎么一个问题,就是在调用这个dll进行处理的时候,如果我要发255字节来处理,都是先将字节数组getstring转化为字符串。但是在发送过程中,我打断点看到有很多'/0'的转译字符,还有另外一个接收端调用这个dll来接收这个数据,就用stringbuilder收到这个字符串,但是在收端我发现,字符串中数据都已经被截断了"sjhg\0\0\0\0\0\djskjdh\00\0\0\0\0\",只有前面的""sjhg"4个字节的数据,收到就不对。是不是在收发时不能使用字符串这种类型,正确应该用什么类型呢?关键要能和vc dll的 char *能传过去,请教诸位大侠了,急!
解决方案 »
- C#下 如何用串口发送文件!!并且接受
- messagebox 两个按钮的问题
- .net 里的string是UNICODE还是ASCII?
- C#的程序里用到的图标资源的路径可以修改吗?
- ( winform )如何实现我的FORM一启动,就能打开一个目录下已经存在的mytest.txt文件,同时打开另存为对话框,让使用者可一存为自己想要的
- 请问是不是WINDOWS应用程序,WEB应用程序,控制台应用程序,在没有按FRAMEWORK的机器上都不能运行呢???
- 在c#或mshtml中有没有和script交流的类呀,比如在WebBrowser中于获取script返回的信息(和script传过来的图片)?
- 求助!!!asp.net(c#)显示文件的问题!!
- 读取串口和usb数据?
- C#中文Beta2版的一个BUG!
- 开发手机软件,如何上网?
- 写出一组数 84、97、50、37、8、51利用冒泡法排序进行排序的过程(不写算法)。
filestream fs=new filestream (xxxxxxx);
bianrywrite r=new bianrywrite(fs,system.encoding.default);
byte[] buffer=new byte[255];
r.read(buffer,0,255);
string str=Encoding.default.getstring(buffer);
然后就调用vc那个dll发函数,发现str字符串里很多终结符'\0',收到放入stringbuilder类型,发现第一个'\0'后有效数据都丢失了,急啊
你看一下dll的说明,看看把\0删除会有什么影响,没影响的话就删除。
也可以在C#里把方法的参数写为byte[]的,直接传递buffer,而不要再Encoding.default.getstring(),这样有时候会丢数据。