2013-01-15 39 views
0

我有一個整數從函數返回:轉換整數值到十六進制字符串

int a = func(); 

例如,a = 236

我需要將此視爲整數的十六進制表示,並存儲在另一個可變其十進制表示,這樣,當印像這樣:

printf("%x", variable) 

...的輸出應爲:

236 
+6

究竟是你想做些什麼? 'int a = 0x236'似乎會達到你想要的結果。 –

+4

你的意思是'int a = 0xec;'? –

+0

@ ring0不,我需要它像0x236。我也從函數中獲取這個值給變量。 – Haris

回答

3

如果我明白你的需要,這個小代碼段會做

#include <stdio.h> 

int main() 
{ 
    char num[128]; 
    int a=236; 
    int hex; 

    sprintf(num, "0x%d", a); 

    sscanf(num, "%x", &hex); 

    printf("Hex: %x\n", hex); 
} 

輸出

Hex: 236 
+1

您好,謝謝回覆,這就是我的意思。 – Haris

4

所有的值將僅以二進制格式存儲。如果要使用%d格式字符串打印十進制格式的打印值,或者如果要打印十六進制值,請使用%x進行打印。

相同我們可以分配十進制和十六進制格式的值也。

int a = 236; 
int b = 0x236; 
printf("%d", a); //it will print 236 
printf("%x", a); //it will print EC 
printf("%d", b); //it will print 566 
printf("%x", b); //it will print 236 

我們可以打印同樣使用%o格式字符串中的八進制形式存儲的二進制值。

+0

值以二進制存儲,而不是十六進制。 – m0skit0

+0

更新了答案。其實我的意思是,它不會在3字節中存儲'2''3'和'6'的值爲'236' – rashok

相關問題