C / C ++ эквивалент Java Java Integer.toHexString - PullRequest
1 голос
/ 26 июня 2010

C / C ++ эквивалентен Java Integer.toHexString.

При переносе некоторого кода из Java в C / C ++, есть ли в C встроенная функция для Integer.toHexString в Java?

UPDATE:

Вот точный код, который я пытаюсь перенести:

String downsize = Integer.toHexString(decimal);

Ответы [ 6 ]

9 голосов
/ 26 июня 2010

Использование заголовка <sstream>:

std::string intToHexString(int i) {
    std::stringstream ss;
    ss << std::hex << std::showbase << i;
    return ss.str();
}
5 голосов
/ 26 июня 2010

Как насчет Boost.Format для решения C ++:

(format("%X") % num).str()
5 голосов
/ 26 июня 2010

В C:

sprintf(s, "%x", value);

Убедитесь, что на s достаточно места для рендеринга шестнадцатеричного числа.64 байта гарантировано (при этом) будет достаточно.

3 голосов
/ 26 июня 2010

char s[1+2*sizeof x]; sprintf(s, "%x", x);

1 голос
/ 26 июня 2010
#include <iostream>
#include <sstream>

std::stringstream ss(std::stringstream::out);
int i;
ss << std::hex << i << flush;
string converted = ss.str();

Также взгляните на setw (для чего нужно #include <iomanip>)

0 голосов
/ 26 июня 2010

itoa делает то, что вы хотите (третий параметр обозначает основание):

/* itoa example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  int i = 12;
  char buffer [33];
  itoa (i,buffer,16);
  printf ("hexadecimal: %s\n",buffer);
  return 0;
}
...