[問題] 數值轉字串塞到 char變數中的問題

看板C_and_CPP (C/C++)作者 (Relationship)時間15年前 (2011/04/24 12:15), 編輯推噓0(008)
留言8則, 3人參與, 最新討論串1/1
平台: Ubuntu 10, gcc File Name: Test.c Code: #include <stdio.h> int main(int argc, char** argv) { char *arg_1; arg_1 = argv[1]; //取得第一個參數 char buffer[3]; buffer[0] = 0x30; buffer[1] = 0x40; buffer[2] = 0xAB; int c; c = strtol(arg_1, NULL, 16); buffer[0] = (char)c; printf("Convert String: %x\n", buffer[0]); } 執行: Test.exe AA 結果: Convert String: ffffffaa 期望結果: Convert String: aa 不知道為什麼,當我的參數值是 80以上,就會變成負數,如果是 79以下,就正常。 請高手大大們幫忙一夏 @o@" 謝謝大大們。 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 182.235.174.210 ※ 編輯: terence362 來自: 182.235.174.210 (04/24 12:15) ※ 編輯: terence362 來自: 182.235.174.210 (04/24 12:17)

04/24 12:33, , 1F
當參數是 0x80 表示是 10進位128, 先用 <limits.h>
04/24 12:33, 1F

04/24 12:33, , 2F
中的 CHAR_MAX 確定用 char 裝不裝得下吧, 溢位了
04/24 12:33, 2F

04/24 12:44, , 3F
感謝大大,可否明確的指導一下用法呢??@@ 感謝您
04/24 12:44, 3F

04/24 20:30, , 4F
你的參數值最大是多少? 一定要用 char 來存?
04/24 20:30, 4F

04/24 23:18, , 5F
參數 長度 最長有 16個字~
04/24 23:18, 5F
※ 編輯: terence362 來自: 182.235.167.170 (04/24 23:18)

04/24 23:19, , 6F
數值的話 頂多 255 也就是 帶入的參數為 FF
04/24 23:19, 6F

04/25 10:07, , 7F
改為 unsigned char buffer[3]; 應是你要的, 0~255.
04/25 10:07, 7F

05/04 22:18, , 8F
Thanks :)
05/04 22:18, 8F
文章代碼(AID): #1DiwFHnS (C_and_CPP)
文章代碼(AID): #1DiwFHnS (C_and_CPP)