[問題] 轉ASCii

看板C_and_CPP (C/C++)作者 (SOS)時間16年前 (2009/06/15 02:25), 編輯推噓1(1016)
留言17則, 4人參與, 最新討論串1/2 (看更多)
請問一下可以把一般的字串轉成ACSii嗎? 我在網路上看到的是用for迴圈 如下: int i,j=0; char ch[100]={'\0'}; gets(ch); for(i=0;i<(int)strlen(ch);i++) printf("%X\n",ch[i]); 我爬文和看網路上 都是print的時候轉 但是我想把字串轉成ASCii後存成立另一個字串 不知道有沒有什麼辦法或是函式? 或是我單純想把10進位的數字存成16進位的字串 可以辦的到嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.135.17 ※ 編輯: a789449 來自: 140.119.135.17 (06/15 02:26)

06/15 02:56, , 1F
第一個問題:就已經是馬了你還要把馬改成馬,的確很難
06/15 02:56, 1F

06/15 02:57, , 2F
第二個問題:sprintf() (C way) sstream (C++ way)
06/15 02:57, 2F

06/15 03:48, , 3F
XDDDDD 一樓
06/15 03:48, 3F

06/15 03:54, , 4F
char 是 integer type 的所以沒什麼好轉的
06/15 03:54, 4F

06/15 09:25, , 5F
1F的說明真是簡單又貼切XD 建議原po先了解一下char與
06/15 09:25, 5F

06/15 09:25, , 6F
ASCII之間的關係XD
06/15 09:25, 6F

06/15 18:25, , 7F
感謝M大的提醒 只是我想把碼存到另一個字串裡XDDD
06/15 18:25, 7F

06/15 19:49, , 8F
那sprintf就結了
06/15 19:49, 8F

06/15 19:49, , 9F
visible的ascii碼不過就是0x30 - 0x80 所以你要開一個字
06/15 19:49, 9F

06/15 19:51, , 10F
串為原始字串的3倍長 然後每次
06/15 19:51, 10F

06/15 19:51, , 11F
sprintf(t[3*i], s[i], "%x02")
06/15 19:51, 11F

06/15 19:51, , 12F
這樣每次寫入字串後面的'\0'下次會被蓋掉 最後你就得到
06/15 19:51, 12F

06/15 19:52, , 13F
一個完整的hex字串
06/15 19:52, 13F

06/15 19:53, , 14F
這是原則 t要開多大 i從多少跑到多少 你可以自己找出來
06/15 19:53, 14F

06/15 19:53, , 15F
上面寫錯:sprintf(t[3*i], s[i], "%x02 ");
06/15 19:53, 15F

06/15 19:54, , 16F
沒有空白就不需要3*i了 自定輸出格式也同理
06/15 19:54, 16F

06/16 20:14, , 17F
感謝M大 sprintf真的很好用
06/16 20:14, 17F
文章代碼(AID): #1ADK2IuW (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
0
2
完整討論串 (本文為第 1 之 2 篇):
0
2
1
17
文章代碼(AID): #1ADK2IuW (C_and_CPP)