如何将char或字符串转换为十六进制?

时间:2011-09-14 08:48:47

标签: .net c++-cli

我想在VC ++中将字符串转换为十六进制。 vc ++中是否有内置函数来执行此操作。我正在使用Visual Studio 2008.就像VB有一些内置函数一样,否则如果没有内置函数,任何人都可以分享的任何代码都会受到赞赏。

4 个答案:

答案 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。