作者:
chrisos (克里斯)
2015-06-10 09:44:15※ 引述《hccash (風雨飄搖)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: VS 2008
: 問題(Question):
: 請問板上各位大大
: 今天假設我有一BYTE數值為0x01
: 我如何轉換為兩個ASCII - 0x30 0x31
: 並且儲存成為WORD大小0x3031呢?
: 感謝!
借文問一下,那請問如果是0xA2的狀況呢?
原文中推文的解答是利用取值加上0x30的方式,但這方式只能對應到0~9
ascii表中A是由0x41開始 a是由0x61開始
如果我有一組亂數產生的HEX檔,我要怎麼做轉換會比較好?
ps:補充一下平台,使用在Microchip上,compiler為XC8,相容於C99規範(純C)
通通normalize成0-15,然後隨便你愛加多少。
作者:
chrisos (克里斯)
2015-06-10 10:29:00欸...不是很懂XD 可以稍微解釋一下嗎QQ
不管你處理[0-9A-F]或[0-9a-f]都可以轉成0..15吧
作者:
chrisos (克里斯)
2015-06-10 10:42:00轉成0~15是指原文中 value & 0x0f 的這種方式嗎?
作者:
EdisonX (卡卡獸)
2015-06-10 12:26:00你可以用if else,結果正確就行。
作者:
Feis (永遠睡不著 @@)
2015-06-10 13:18:00或者你喜歡讓人家看不懂:12336+(s>>4<<8)+s%16+(s>=160)*1792+(s%16>=10)*7
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2015-06-10 13:28:00至少也用 switch 吧, if-else 也太誇張 XD
作者:
chrisos (克里斯)
2015-06-10 13:40:00對了 value就是1Byte hex ASCII陣列是2 Byte ASCII然後array裡面應該寫0、1比較好,沒注意到
作者:
firejox (Tangent)
2015-06-11 18:24:00Ascii[1] = "0123456789abcdef"[(value&0xf0)>>4]
作者:
chrisos (克里斯)
2015-06-12 09:42:00?? 上面是?
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2015-06-12 23:15:00長短不是問題啊, 效率和可維護性才是
作者:
firejox (Tangent)
2015-06-15 00:39:00用索引取值的方式 算是一個簡單好讀的方法