C++/CLI中的十进制到十六进制函数
Decimal to Hexadecimal Functions in 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;
}
我认为我缺少一些相当简单的东西。感谢您的任何帮助。
解决方案:根据David Yaw的指导。
string dectohex(int i)
{
char hex_array[10];
sprintf (hex_array, "0x%02X", i);
string hex_string(hex_array);
return string(hex_string);
}
sprintf
的返回值不是字符串,正如您当前编码的那样。它是写入作为第一个参数传入的char*
的字符数。使用传入的字符缓冲区,并将char*
转换为字符串对象。
string dectohex(int i)
{
char hex_string[10];
sprintf (hex_string, "0x%02X", i);
return string(hex_string);
}
不要使用sprintf
请改用字符串流。
#include <sstream>
string dectohex(int i)
{
stringstream str;
str << std::hex << i;
return str.str();
}
要获得与以前完全相同的文本:
str << "0x" << std::setfill('0') << std::setw(2) << std::hex << i;
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 在setiosflags函数中使用十六进制标志
- C++ 在地板函数之后以十六进制打印数字
- 是否有函数或公式可以在 c++ 中将字符串"of letters"转换为十六进制
- 按位函数 AND、OR 和 XOR 在 C++ 中使用十六进制字符串
- 将十六进制数作为主要函数参数
- 从十六进制值返回 OpenGL #define 错误名称的函数
- 十进制到十六进制转换c++内置函数
- 为什么我的 RGB 转十六进制函数在传递颜色分量时返回 0
- 为什么该函数以相反的顺序显示十六进制代码
- GDB:显示函数将我的 {type} 的地址打印为整数——想改成十六进制
- C++小字符到十六进制函数
- C++/CLI中的十进制到十六进制函数
- C++:十六进制到十进制的转换函数-没有得到正确的输出
- 我需要写一个函数,将十六进制转换为十进制,并使用递归,我不断得到运行时错误
- C++:STRING函数返回十六进制值而不是字符串
- 将常量转换为十六进制字符串的C/ c++宏函数