2010-06-26 110 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);