精易论坛

标题: C#和易语言交互,关于传递字节集shuj的方案 [打印本页]

作者: ds9660    时间: 2020-6-15 12:37
标题: C#和易语言交互,关于传递字节集shuj的方案
方法有两种,第一,C#取byte[]变量指针,传递给易语言,易语言这边用指针到字节集还原

但是易语言传字节集给C#就不行了,因为易语言的字节集结构不是 byte[] ,哪怕取了指针,C#也无法还原到Byte[]变量
(哪怕你取字节集指针地址+4、+8,在c#那边,也无法还原)

第二,C#把byte[]shuj转成base64编码成文本,易语言收到以后可以用base64解码
这样做,虽然复杂了一点,但是好在易语言和C#双方都能互传

作者: Jmp520    时间: 2020-6-15 14:37
本帖最后由 xiaobang 于 2020-6-15 14:39 编辑

哪怕你取字节集指针地址+4、+8,在c#那边,也无法还原 为啥无法还原?rtlcopymemory不行吗。 C# 自带的那些buffer 操作库不行吗
作者: ds9660    时间: 2020-6-16 00:52
xiaobang 发表于 2020-6-15 14:37
哪怕你取字节集指针地址+4、+8,在c#那边,也无法还原 为啥无法还原?rtlcopymemory不行吗。 C# 自带的那些 ...

我只试过指针到byte无法还原,你可以试试,如果可以告诉我一声
作者: taizhong    时间: 2020-6-16 01:07
第一个方法,易语言的字节集是个结构体,C#不认,可以取字节集变量的指针,传递给C#
第二个方法,与其用base64编码,不如转成十六进制文本,C#再HexToByte
作者: ds9660    时间: 2020-6-16 11:56
taizhong 发表于 2020-6-16 01:07
第一个方法,易语言的字节集是个结构体,C#不认,可以取字节集变量的指针,传递给C#
第二个方法,与其用base64 ...

我说的就是取字节集指针,C#也还原不了,byte[]和字节集结构体,不是一个shuj类型
作者: ds9660    时间: 2020-6-16 11:58
taizhong 发表于 2020-6-16 01:07
第一个方法,易语言的字节集是个结构体,C#不认,可以取字节集变量的指针,传递给C#
第二个方法,与其用base64 ...

另外,16进制编码速度快,但体积要大,base64也慢不了多少,但是编码后相对较小
作者: taizhong    时间: 2020-6-16 15:30
ds9660 发表于 2020-6-16 11:56
我说的就是取字节集指针,C#也还原不了,byte[]和字节集结构体,不是一个shuj类型


这样的地址C# 读取不出来?

作者: ds9660    时间: 2020-6-16 15:31
taizhong 发表于 2020-6-16 15:30
这样的地址C# 读取不出来?

你先试过再来抬杠
作者: taizhong    时间: 2020-6-16 15:32
ds9660 发表于 2020-6-16 15:31
你先试过再来抬杠

不试,没道理读取不到
告辞




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4