Re: [問題] 請問有關型態轉換

看板C_and_CPP作者 (餅乾)時間16年前 (2009/12/29 13:50), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串2/2 (看更多)
感謝各位大大的說明, 我現在試著用hilorrk大大的方法寫過濾的條件, 但是不論我是這樣取, sscanf(get,"%x[^:]%x[^:]%x[^:]%x[^:]%x[^:]%x",&get0[0],&get0[1],&get0[2], &get0[3],&get0[4],&get0[5]); 或者是這樣取 sscanf(get,"%x%:%x%:%x%:%x%:%x%:%x",&get1[0],&get1[1],&get1[2],&get1[3], &get1[4],&get1[5]); 出現的值都是0 0 0 0 0 0, 請問各位大大我應該如何寫? 才能得到正常的內容呢? 謝謝。 ※ 引述《biingen (餅乾)》之銘言: : 標題: [問題] 請問有關型態轉換 : 時間: Sat Dec 26 10:29:47 2009 : : 遇到的問題: (題意請描述清楚) : 目前我取得一串的網路MAC Address的資料,例如:00:11:22:33:44:55,我要用何種方法 : 能取得xx的資料,我有試過用strcpy來取,但我希望能每個"11"變成一個0x11。 : : : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : gcc,Linux : : 謝謝各位大大的回答。 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 59.104.85.201 : 推 hilorrk:sscanf+%x 12/26 10:33 : → suhorng:((str[i]-'0')*16 + str[i+1]-'0') 12/26 16:53 : 推 VictorTom:'A'~'F'或者'a'~'f' - '0'以後會....XD 12/26 17:52 : → hilorrk:我的方法不好嗎0.0 12/26 18:53 : → suhorng:對吼我笨了XD 一樓別誤會啊~~~ 12/26 22:50 : → suhorng:一樓的應該是最方便的解法了吧XD 12/26 22:51 : → MOONRAKER:sstream可能更graceful一點 12/27 22:17 : → biingen:請問sstream是屠語法嗎?我查都是c++的程式庫中的參數。謝 12/29 10:07 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.101.3.48

12/29 14:59, , 1F
這種格式我會用 strtok 配 sscanf("%x")來用
12/29 14:59, 1F
謝謝LPH66大大的方法, 我已將程式改為 get=00:11:22:33:44:55 sscanf(strtok(get,":"),"%x",&get1[0]); sscanf(strtok(NULL,":"),"%x",&get1[1]); sscanf(strtok(NULL,":"),"%x",&get1[2]); sscanf(strtok(NULL,":"),"%x",&get1[3]); sscanf(strtok(NULL,":"),"%x",&get1[4]); sscanf(strtok(NULL,":"),"%x",&get1[5]); printf("%x %x %x %x %x %x\n",get1[0],get1[1],get1[2],get1[3],get1[4],get1[5]); 但得到的值卻是 0 11 ffffff22 ffffff33 ffffff44 ffffff55 請問各位大大這要怎麼簡化成為 00 11 22 33 44 55呢? 謝謝。 ※ 編輯: biingen 來自: 120.101.3.45 (12/29 19:26)

12/30 04:19, , 2F
你的get1型態是int嗎?
12/30 04:19, 2F

12/30 09:25, , 3F
謝謝cplusplus大大,真的是用錯int了,我宣告成char了。
12/30 09:25, 3F
文章代碼(AID): #1BEPYl5i (C_and_CPP)
文章代碼(AID): #1BEPYl5i (C_and_CPP)