易语言到字节集c,【笔记】C++ 实现 易语言到字节集

[C++] 纯文本查看 复制代码//T in_value 要转换成字节集的数据

//UINT &uSize 返回转换后PBYTE的大小

template

inline const PBYTE ToBit(T in_value,OUT UINT &uSize)

{

//str把模板in_value值保存转换成string类型的字符串

//str1保存临时文本用于交换值

string str, str1;

//判断类型是否为整数

if (typeid(in_value) == typeid(int))

{

//保存转换16进制的文本

char hex[10];

//转换成16进制并强制显示8个字符长度

sprintf_s(hex, 10, "%.8x", in_value);

//转换成string字符串类型

str = hex;

//一个整数4个字节,所以申请一个str字符串大小(8)/2 的BYTE指针

//用作返回值

BYTE * pStr = new BYTE[str.size() / 2];

//数据容器

int * i = new int[str.size() / 2];

//读取2CHAR个为单位的字符串并转换成10进制

for (UINT ii = 0; ii < str.size() / 2; ii++)

{

//接收转换成10进制的值

int iii;

//读取子字符串

str1 = str.substr(ii * 2, 2); //读取2个字符

//把str1的值转换成10进制保存给iii变量

sscanf_s(str1.data(), "%x", &iii);//转换成10进制

//i数组把转换的10进制给临时保存其数值

i[ii] = iii;

}

//把的到的数值以内存的形式倒序保存到数组中

for (UINT ii = 0; ii < str.size() / 2; ii++)

{

//[str.size() / 2 - 1 - ii] 等于取的数组最后一个索引

//并且把值给变量iii保存

int iii = i[str.size() / 2 - 1 - ii];//倒转顺序

//把iii的值赋值给返回的pStr BYTE数组[ii]的值

pStr[ii] = iii;

//获取BYTE pStr[]的大小

uSize = uSize + 1;

}

//删除申请的堆栈地址防止内存溢出

delete[]i;

return pStr;

}

//判断类型是否为Ascii字符串

if (typeid(in_value) == typeid(const char *))

{

//文本到字节集

//把模板参数in_value转换成stirng字符串

str = Convert(in_value);

//申请一个str字符串大小的BYTE指针

//用作返回值

BYTE * pStr = new BYTE[str.size()];

//循环复制给pStr

for (UINT i = 0; i < str.size(); i++)

{

//把字符转换成无符号CHAR

pStr[i] = (BYTE)str[i];//转换成无符号字符不然出负号

//获取BYTE pStr[]的大小

uSize = uSize + 1;

}

return pStr;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这两天搬C++代码到 易语言 上,虽然一路顺风,但是感觉有点乱,比如数据结构之类的,有些的结构复杂,要自己计算偏移量 于是,灵感来了,把C++的结构代码复制到易语言里,然后解析一下,如果调用C++返回的是数据 结构的话,把指针取出来,然后利用本模块便可以模拟加载指针到 动态数据 类型。 步骤:(如果是有指针的) 1、置入相关结构大小() (如果有无法识别的 且不为C++中的指针类型将会默认认为是int型,所以先置入,避免结构出错,没有其他结构的就不管) 2、解析类() (把C++中的结构粘过来解析一下,解析完成后将返回xx结构的大小,类似于C++中定义xx类型后,调用sizeof()一样) 3、置xx指针() (把指针置入进去) 4、Get() 就可以愉快的取出值啦,默认可以取出int,string。如果是其他自定义的xx结构,将会返回字节,如果C++中原本是指针类型的,这里就返回指针 如果是没有指针的,而是我们创建数据 类型传入C++中 1、置入相关结构大小() 同上 2、解析类() 同上 3、创建数据 空间() 就类似于C++中的先new初始化一下空间 4、Set() 设置值啦! 5、取类指针() 取出自定义xx类型结构的指针,然后传入DLL函数中调用C++。 下面是我的实验截图: 1、C++中原本定义的结构: 2、C++中调用,然后先取一下结构大小 3、把结构粘贴到易语言中 4、运行一下。 5、至于使用,已经在exosip项目里测试过了,取值没问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值