从`const char *'转换为`byte'

时间:2014-10-16 13:33:49

标签: c++ char byte converter

我无法将const char转换为byte。我正在使用ifstream读取文件,它将内容作为字符串,然后我使用c_str()将字符串转换为const char然后尝试将其插入字节数组以进行数据包发送。我是c ++的新手,无法理解我必须如何将char转换为byte并需要你的帮助。这是我的一段代码,请给我一些建议

byte buf[42];

const char* fname = path.c_str();

ifstream inFile;
inFile.open(fname);//open the input file

stringstream strStream;
strStream << inFile.rdbuf();//read the file
string str = strStream.str();//str holds the content of the file

vector<string> result = explode(str,',');

for (size_t i = 0; i < result.size(); i++) {
    buf[i] = result[i].c_str(); // Here is Error
    cout << "\"" << result[i] << "\"" << endl;
}

system("pause");

这是我从文件中获取的数据:(0x68,0x32,0x01,0x7B,0x01,0x1F,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00)

2 个答案:

答案 0 :(得分:0)

您正在尝试将字符串(多个字符)分配给单个字节。它不合适。 尝试像

这样的东西

在循环开始之前添加:

size_t bufpos = 0;

然后在循环内

const string & str = resulti[i];
for (size_t strpos = 0; strpos < str.size() && bufpos < sizeof(buf); ++strpos)
{
   buf[bufpos++] = str[strpos];
}

答案 1 :(得分:0)

我自己做了,现在我将解释解决方案。所以我想要字符串(0x68,0x32,0x03,0x22等..)变量分割每&#34;,&#34;然后在将其作为16位十六进制值输入字节数组后将其转换为十六进制值。

char buf[42]; // Define Packet

const char* fname = path.c_str(); // File Location


ifstream inFile; //
inFile.open(fname);//open the input file

stringstream strStream;
strStream << inFile.rdbuf();//read the file
string str = strStream.str();//str holds the content of the file



vector<string> result = explode(str,','); // Explode Per comma


for (size_t i = 0; i < result.size(); i++) { // loop for every exploded value

unsigned int x;   
std::stringstream ss;
ss << std::hex <<  result[i];    // Convert String Into Integer value 
ss >> x;
buf[i] = x;

 printf(&buf[i],"%04x",x); //Convert integer value back to 16 bit hex value and store into array


    }



  system("pause");

感谢所有人的重播。