評價: 4 回應: 2 閱覽: 185
置頂

C語言二維字串轉整數

板上大神大家好

一般看到這標題,應該都是使用atoi或是strtol就可以解決了

但我遇到一個奇怪的問題

我宣告了一個二維字元陣列去存數字,並想要把他轉成hex

但無法解決3個位元的問題

程式碼如下:

char book[3][3]={"10","255","32"};
int i=0,temp=0;

for(i=0;i<3;i++)
{
 printf("book[d]=s\n",i,book[i]);
 temp=(uint8_t)strtol(book[i],NULL,16);
 printf("temp=x\n",temp);
}

執行結果:

book[0]=12
temp=12
book[1]=25532
temp=32
book[2]=32
temp=32

希望結果:

temp=c
temp=ff
temp=20


請問問題是發生在哪裡呢?

熱門回應

1.如果照你的期望值c ff 20換算 初始值10 255 32 好像是10進位吧  

2.初始值10也不對 應該是 12  否則期望值怎麼會是c  

3.如果初始值為10進位, strtol應該用10去轉換

4.book[3][3] 字串長度不足,須再加一位空間,做結束字元\0

strtol(book[i],null,16) 這是用16進位解讀book[i]

不是轉16進位

16進位的255就大於uint8上限了

所以當然就爆了

會員登入 (先登入會員才能回覆留言喔!)

Facebook留言