作者a789449 (SOS)
看板C_and_CPP
標題[問題] 轉ASCii
時間Mon Jun 15 02:25:21 2009
請問一下可以把一般的字串轉成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)
1F:→ MOONRAKER:第一個問題:就已經是馬了你還要把馬改成馬,的確很難 06/15 02:56
2F:→ MOONRAKER:第二個問題:sprintf() (C way) sstream (C++ way) 06/15 02:57
3F:→ fjm31714:XDDDDD 一樓 06/15 03:48
4F:→ fjm31714:char 是 integer type 的所以沒什麼好轉的 06/15 03:54
5F:推 VictorTom:1F的說明真是簡單又貼切XD 建議原po先了解一下char與 06/15 09:25
6F:→ VictorTom:ASCII之間的關係XD 06/15 09:25
7F:→ a789449:感謝M大的提醒 只是我想把碼存到另一個字串裡XDDD 06/15 18:25
8F:→ MOONRAKER:那sprintf就結了 06/15 19:49
9F:→ MOONRAKER:visible的ascii碼不過就是0x30 - 0x80 所以你要開一個字 06/15 19:49
10F:→ MOONRAKER:串為原始字串的3倍長 然後每次 06/15 19:51
11F:→ MOONRAKER:sprintf(t[3*i], s[i], "%x02") 06/15 19:51
12F:→ MOONRAKER:這樣每次寫入字串後面的'\0'下次會被蓋掉 最後你就得到 06/15 19:51
13F:→ MOONRAKER:一個完整的hex字串 06/15 19:52
14F:→ MOONRAKER:這是原則 t要開多大 i從多少跑到多少 你可以自己找出來 06/15 19:53
15F:→ MOONRAKER:上面寫錯:sprintf(t[3*i], s[i], "%x02 "); 06/15 19:53
16F:→ MOONRAKER:沒有空白就不需要3*i了 自定輸出格式也同理 06/15 19:54
17F:→ a789449:感謝M大 sprintf真的很好用 06/16 20:14