title: 如何字符串直接写入内存
date: 2021-12-28 10:06:26
categories:
tags: c/c++
将字符串直接写入内存中
有时候我们想通过传参的形式将0x01这种16进制的数据直接写入内存,但ascii码对照表最大仅为0x7f,有些16进制数据如0xff无法通过字符的形式写入,可以试试下面这个函数。我们可以将想要写入内存的数据直接写为字符串形式,如我想往内存中写入:57 53 45 bb 。那么我们可以直接声明该字符串为 :
char * str="575345bb";
在调用下面这个函数就能将该字符串直接写入内存中了,下面为该函数的实现:
static void SetStrToMem(string str, char* mem)
{
for (string::size_type ix = 0; ix != str.size(); ix = ix + 2)
{
basic_string <char> tmp = str.substr(ix, 2);
char* s = NULL;
char i = (char)strtol(tmp.c_str(), &s, 16);
memcpy(mem, &i, 1);
mem++;
}
}
其中,str为想直接写入内存的数据,mem为要赋值的变量。