2010-06-26 180 views
1

相当于java Integer.toHexString的C/C++。相当于java的C/C++ Integer.toHexString

将一些代码从java移植到C/C++,C是否在函数中构建了Integer.toHexString在java中?

UPDATE:

继承人是确切的代码我试图端口:

String downsize = Integer.toHexString(decimal); 
+1

是哪一个,C或C++?答案会有所不同。 – 2010-06-26 06:25:57

+0

C++,旨在与iPhone一起使用。 – user282964 2010-06-27 15:44:15

回答

5

在C:

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

一定要在s有足够的空间呈现十六进制数字。 64字节保证(在此)是足够的。

+5

你应该使用'snprintf'而不是'sprintf',因为后者会溢出缓冲区。 – 2010-06-26 06:47:40

+0

万一您的编译器支持它。 MSVC仍然不支持C99,afaik。 – 2010-06-26 08:46:33

+0

微软有自己的解决方案(StrSafe)。如果你正在处理'TCHAR'这可能是一条路。另一方面,如果你真的知道你是在处理'char's还是'wchar_t's(以及扩展名,你正在使用的编码),那么你可以使用更加标准化的东西。 – 2010-06-26 09:10:55

5

如何Boost.Format用于C++溶液:

(format("%X") % num).str() 
9

使用<sstream>头:

std::string intToHexString(int i) { 
    std::stringstream ss; 
    ss << std::hex << std::showbase << i; 
    return ss.str(); 
} 
1
#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

itoa做你想做的事情(第三个参数表示ba SE):

/* 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; 
} 
+0

为什么非标准功能? – Nyan 2010-06-26 12:25:41

3

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