我无法将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)
答案 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");
感谢所有人的重播。