任何人都可以告訴我什麼是下面的代碼錯?數據類型轉換(無符號long long到char)
__inline__
char* ut_byte_to_long (ulint nb) {
char* a = malloc(sizeof(nb));
int i = 0;
for (i=0;i<sizeof(nb);i++) {
a[i] = (nb>>(i*8)) & 0xFF;
}
return a;
}
此字符串然後再連接到如使用strcat
一個較大的一個的一部分。字符串可以很好地打印,但用於表示爲字符符號的整數。我正在使用%s
和fprintf
檢查結果。
非常感謝。
編輯
我把下面的意見之一(我是單獨加入終止\0
,呼籲fprintf
之前,但strcat
後修改我最初的功能...
__inline__
char* ut_byte_to_long (ulint nb) {
char* a = malloc(sizeof(nb) + 1);
int i = 0;
for (i=0;i<sizeof(nb);i++) {
a[i] = (nb>>(i*8)) & 0xFF;
}
a[nb] = '\0' ;
return a;
}
這示例代碼仍未打印出數字...
char* tmp;
tmp = ut_byte_to_long(start->id);
fprintf(stderr, "Value of node is %s \n ", tmp);
「string」? ???終止零字節在哪裏? – pmg 2011-12-16 23:36:14
你只是將數字`nb`分解成字節(小端),所以它是一種與字符串/文本不兼容的二進制格式。如果你選擇了小數字,你肯定會在那裏有一些零字節。 – u0b34a0f6ae 2011-12-16 23:40:56