进制转换问题
在一个textbox控件中输入abcd1234,利用函数GetCtrlVal得到该值存入到char数组里面,但现在是一个字符占一个字节,为ASC码格式,我该怎样转换才能得到0xab 0xcd 0x12 0x34,请问高手该怎样编程解决这个问题?
[解决办法]
- C/C++ code
#include <stdio.h>#include <string.h>static const unsigned char ASC_HEX_TAB[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};char *pack(const char *srcbuf, int srclen, char *dstbuf, int *dstlen){ int i; *dstlen = (srclen + 1) / 2; for (i = 0; i < *dstlen; i++) { dstbuf[i] = ASC_HEX_TAB[(unsigned char)srcbuf[i * 2]] << 4; dstbuf[i] |= ASC_HEX_TAB[(unsigned char)srcbuf[i * 2 + 1]]; } return dstbuf;}intmain(void){ char buf[80 + 1]; int i, len; pack("abcd1234", 8, buf, &len); for (i = 0; i < len; i++) printf("%02hhx", buf[i]); printf("\n"); return 0;}