[問題] 如何將字串轉成BYTE型態

看板C_and_CPP (C/C++)作者 (克爾)時間16年前 (2010/06/22 19:16), 編輯推噓3(3014)
留言17則, 3人參與, 最新討論串1/1
各位先進大家好 小弟現在想把char字元轉換成16進位後再轉換成BYTE型態 請問該如何做呢? 利用以下方式轉成16進位 char ch = 'b'; char ch3[4]; sprintf(ch4,"0x%02x",ch); //cover 98 to 62 之後要呼叫 keybd_event((BYTE)ch3,0,0,0); 可是這樣使用它只吃到;x62不會進去 請問該怎麼做呢? 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.12.229

06/22 19:19, , 1F
ch3 的空間不夠大
06/22 19:19, 1F

06/22 19:22, , 2F
不過在這裡iTemp應該可以直接丟給keybd_event
06/22 19:22, 2F

06/22 19:26, , 3F
根本就不用轉, (char)'b' == (char)98 == (char)0x62
06/22 19:26, 3F

06/22 19:27, , 4F
分別用"%c","%d","%x"去印'b'; 如: printf("%d", 'b');
06/22 19:27, 4F

06/22 19:28, , 5F
或者: printf("%c", 98); printf("%x", 98); 交叉玩一玩
06/22 19:28, 5F

06/22 19:29, , 6F
然後去搞懂ASCII, 10/16進位顯示與儲存是怎麼回事:)
06/22 19:29, 6F

06/22 19:30, , 7F
如果你是要丟"0x62"這樣的string進keybd_event(), 才需
06/22 19:30, 7F

06/22 19:30, , 8F
要像你這樣sprintf轉, 不過既然type是BYTE, 應該是不用.
06/22 19:30, 8F

06/22 19:31, , 9F
不然ch3空間也不夠. 話說, ch?? iTemp?? 例子打錯了嗎??
06/22 19:31, 9F

06/22 19:32, , 10F
原po可能以為16跟10進制整數還有字元的儲存是不同的
06/22 19:32, 10F
※ 編輯: kingbike 來自: 61.216.12.229 (06/22 19:44) ※ 編輯: kingbike 來自: 61.216.12.229 (06/22 19:45)

06/22 19:46, , 11F
[4]不夠喔, "0x62"包含你沒看到的'\0'結束字元共5 byte
06/22 19:46, 11F

06/22 19:46, , 12F
另外, 你是要傳"0x62"字串進去, 還是0x62這個數值啊??
06/22 19:46, 12F

06/22 19:47, , 13F
我直接改成keybd_event((BYTE)ch,0,0,0);
06/22 19:47, 13F

06/22 19:48, , 14F
輸出的Key會是2 為什麼呢??
06/22 19:48, 14F

06/22 19:49, , 15F
keybd_event第一個參數要餵virtual key 可是1~9 a~b 跟
06/22 19:49, 15F

06/22 19:50, , 16F
ASCII一樣 應該不用轉換
06/22 19:50, 16F

06/22 19:59, , 17F
你應該是要給他'B' 而不是 'b', 可以google一下對照表
06/22 19:59, 17F
文章代碼(AID): #1C89jpTH (C_and_CPP)
文章代碼(AID): #1C89jpTH (C_and_CPP)