我想在VC ++中将字符串转换为十六进制。 vc ++中是否有内置函数来执行此操作。我正在使用Visual Studio 2008.就像VB有一些内置函数一样,否则如果没有内置函数,任何人都可以分享的任何代码都会受到赞赏。
答案 0 :(得分:1)
修改强>
.NET框架中的字符串格式化函数允许使用:X
指定十六进制数字输出:
System::String^ input = "I am a string!";
System::Text::StringBuilder output;
for each (System::Byte b in input)
{
output.AppendFormat("{0:X} ", b);
}
System::String^ hexString = output.ToString();
Console::WriteLine(hexString);
输出:
49 20 61 6D 20 61 20 73 74 72 69 6E 67 21
注意:这会将原始二进制字节显示为十六进制数字。如果要显示Unicode代码点,则必须处理System::Globalization::StringInfo
类。
答案 1 :(得分:1)
试试这个:
int i = 3735928559;
System::String^ str = System::String::Format("{0:X}", i);
有关详细信息,请参阅string.Format
的文档。
答案 2 :(得分:0)
wtoi和ltow
会奏效。第一个将字符串转换为int,第二个将int转换为十六进制字符串。
这些适用于宽字符串(每个字符2个字节),有atoi和ltoa版本可以使用单字节字符串。
请参阅:
http://msdn.microsoft.com/en-us/library/6y51bcy2(v=VS.90).aspx
http://msdn.microsoft.com/en-us/library/yd5xkb5c(v=VS.90).aspx
答案 3 :(得分:0)
假设这是一个单字节字符串,每个字符将由两个十六进制字符表示(因为十六进制数字由4位表示),所以得到低阶位和高阶位
low = byte & 0xF;
high = (byte & 0xF0) >> 4;
将为您提供0到15之间的两个数字,然后确定它代表的是哪个数字0-F。