// 将16进制数据输出到控制台 void textout(char * name, unsigned char * p, unsigned short len) { char * pp; unsigned short i; pp = (char*) malloc(1024); for (i = 0; i<1024; i++)pp[i] = 0; // len=strlen(p); for (i = 0; i<len; i++) sprintf(pp + i * 2, "%02x", p[i]); sprintf(pp + i * 2, "\n\r"); printf("%s",name); free(pp); } unsigned char toByte(char c) { unsigned char value = 0; if (c >= '0' && c <= '9') value = c - '0'; else if (c >= 'A' && c <= 'Z') value = c - 'A' + 10; else if (c >= 'a' && c <= 'z') value = c - 'a' + 10; return value; } void hexStringToByte(unsigned char *dstByte, const char *srcHexString, int len) { int index; for (int i = 0; i < len; i++){ index = i * 2; dstByte[i] = ((toByte(srcHexString[index])) << 4) | toByte(srcHexString[index + 1]); } } int main() { char tmp[10]; unsigned char t_buf[1024]; // 发送报文缓冲区 hexStringToByte(t_buf, "abcd1234", 8); textout(tmp, t_buf, 8); system("PAUSE"); return 0; }