我有一個程序通過串口與設備進行通信。然而,我在一節中遇到困難。當我運行計算的十六進制命令時,我得到了一個看起來像一個直角符號的東西。以下是兩段代碼(主要部分和功能)。C++/CLI中的十進制到十六進制函數
主要部分:
private: System::Void poll_Click(System::Object^ sender, System::EventArgs^ e)
{
int i, end;
double a = 1.58730159;
String^ portscan = "port";
String^ translate;
std::string portresponse [65];
std::fill_n(portresponse, 65, "Z");
for (i=0;i<63;i++)
{
if(this->_serialPort->IsOpen)
{
// Command 0 generator
int y = 2;
y += i;
std::string command0[10] = {"0xFF", "0xFF", "0xFF", "0xFF", "0xFF", "0x02", dectohex(i), "0x00", "0x00", dectohex(y)};
// The two "dectohex" values above is where I get the odd symbol
for (end=0;end<10;end++)
{
portscan = marshal_as<String^>(command0[end]);
this->_serialPort->WriteLine(portscan);
}
translate = (this->_serialPort->ReadLine());
MarshalString(translate, portresponse [i]);
if(portresponse [i] != "Z")
{
comboBox7->Items->Add(i);
}
this->progressBar1->Value=a;
a += 1.58730159;
}
}
}
功能:
string dectohex(int i)
{
string hexidecimal = "";
char hex_string[10] = "";
hexidecimal = sprintf (hex_string, "0x%02X", i);
return hexidecimal;
}
我假設有一些相當簡單的,我很想念。任何和所有的幫助表示讚賞。
解決辦法: 每大衛偏航的指導。
string dectohex(int i)
{
char hex_array[10];
sprintf (hex_array, "0x%02X", i);
string hex_string(hex_array);
return string(hex_string);
}
在編寫可讀的C++之前,必須學習如何拼寫十六進制。 –
感謝您指出這一點,我一定錯過了這一點,試圖修補我的代碼。我很高興我在標題或說明中沒有錯過它。 – Andy