字节集c,易语言的到字节集在C++中应该如何实现"/>
易语言到字节集c,易语言的到字节集在C++中应该如何实现
贴个代码吧 网上找到的方法,此方法非原创
inline const PBYTE ToBit(int 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 = 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;
}
}
更多推荐
易语言到字节集c,易语言的到字节集在C++中应该如何实现
发布评论