int num = 69;
我想串其十六進制值 「7E」
char result;
sprintf(&result, %X, num);
似乎工作,但只給我拳頭char''我怎麼能得到「7E」?
int num = 69;
我想串其十六進制值 「7E」
char result;
sprintf(&result, %X, num);
似乎工作,但只給我拳頭char''我怎麼能得到「7E」?
結果的問題是它有一個字符的空間,而不是兩個+空終止符。你至少需要三個char
。
這裏是你如何能做到這:
char buf[9]; // Make the buffer larger to fit bigger numbers
sprintf(buf, "%02X", num);
在Objective-C,你做這樣的:
NSString *res = [NSString stringWithFormat:@"%0X", num];
@chux你說得對,謝謝! – dasblinkenlight 2015-01-31 20:39:17
的sprintf生成一個字符串。 結果是一個字符。重新申報其作爲並刪除&
char result[10]; // or something
sprintf(result, "%X", num);
你需要足夠的緩衝區爲十六進制字符串,因爲焦炭會給你只有1個緩衝的角色值得。
int main()
{
int num=69;
char *hex_string = new (char[2]);
sprintf(hex_string, "%X", num);
delete(hex_string);
return 1;
}
使用snprintf避免溢出總是會更好 – cmidi 2015-02-02 00:41:20
69(10)=> 45(16) – BLUEPIXY 2015-01-31 20:18:31
'char result [N];',其中N是足夠大的值可能有幫助。原因是你正在調用*未定義的行爲*。 (假設'%X'應該是''%X''。下次發佈*真實代碼*)。 – WhozCraig 2015-01-31 20:19:51
'7E'十六進制是十進制的'126',你是怎麼希望從整數'69'中得到的? – 2015-01-31 20:20:43