将char *整数数组转换为十六进制

时间:2012-10-22 22:54:53

标签: c++

我有一个结构,它将整数值存储为自定义字符串类型。

typedef char OneLine[MAX_LINE + 1];

所以我有一些实例需要将包含“12”的字符串转换为 C

OneLine testString;
strcpy(testString, "12");

I'd like a way for me to convert testString to be "C"

我该如何解决这个问题?

提前致谢。

3 个答案:

答案 0 :(得分:4)

您可以使用sscanf将“12”转换为整数12.然后您可以使用sprintf %x格式将整数12转换为“C”

答案 1 :(得分:1)

转换可以使用stringstreams

完成
#include <iostream>
#include <sstream>
#include <string>
#include <ios>

int main()
{
  char const *str = "12";
  std::istringstream iss( str );
  int val;

  if( !( iss >> val ) ) { 
    // handle error 
  }
  std::ostringstream oss;

  oss << std::hex << val;
  std::cout << oss.str() << std::endl;
}

或者使用C ++ 11稍微简单的方式

char const *str = "12";
auto val = std::stoi( str );

std::ostringstream oss;
oss << std::hex << val;
std::cout << oss.str() << std::endl;

答案 2 :(得分:0)

首先,即使您手动执行此操作,也不应将char数组用于字符串。使用std::[w]string

其次,您可以使用std::[w][i|o]stringstream执行此操作:

istringstream iss("12");
int number;
iss >> number;

ostringstream oss;
oss << hex << number;

const string& hexNumber = oss.str();
// hexNumber now contains "C"