jianbin huang:
大家好,
我在MQL4的脚本里通过encode函数生成了一个加密字符串,uchar的长度是24位,通过print打印出来复制,然后在另外EA的input参数里输入进去,得到的字符串通过StringToCharArray(InpLicenseCode,dst)转换成uchar数组却是49位的,然后decode就会报错,我猜想应该是编解码的问题。
有人是否做过类似的事情,希望能提供代码供我参考,不胜感激!
下面我将分别放上脚本的代码和EA init的部分代码:
已经解决,引用官方文档里的描述:
此处及下文,请注意在 StringToCharArray 之后使用 ArrayResize。务必将数组大小减少 1 个元素,因为如果 StringToCharArray 函数将字符串转换为字节数组时包含了末尾的 0,这可能会破坏程序的预期执行。特别是在这种情况下,我们的秘密密钥中会有一个额外的零字节,如果在接收端没有使用带有类似人为处理的程序,那么它将无法解密消息。这种额外的零也可能影响与数据交换协议的兼容性(如果 MQL 程序与“外部世界”进行某种集成)。
ArrayResize(key, ArraySize(key) - 1);
大家好,
我在MQL4的脚本里通过encode函数生成了一个加密字符串,uchar的长度是24位,通过print打印出来复制,然后在另外EA的input参数里输入进去,得到的字符串通过StringToCharArray(InpLicenseCode,dst)转换成uchar数组却是49位的,然后decode就会报错,我猜想应该是编解码的问题。
有人是否做过类似的事情,希望能提供代码供我参考,不胜感激!
下面我将分别放上脚本的代码和EA init的部分代码: