hex_string_to_hex.c
输入:一串16进制的字串
输出:由字串转换出来的16进制数值
例如 "E5BC35" -->0xe5,0xbc,0x35
/******************************************************************** created: 2012/02/21 filename: hex_string_to_hex.c author: purpose: *********************************************************************/ #include <stdlib.h> #include <stdio.h> #include <string.h> #include <ctype.h> //------------------------------------------------------------------- static int oneHexCharToHex(char h) { int x = 0; if (isdigit(h)) { x = h - "0"; } else if (isupper(h)) { x = h - "A" + 10; } else { x = h - "a" + 10; } return x; } /*Chaneg TEXT HEX such as E5BC35 to * E5BC35 -->0xe5,0xbc,0x35 * inStr must >0 otherwise return -1*/ int ChangeTHEX2CPTR(const char * inHexString, char * outHex) { int success = -1; int len = 0; int i; char ch1, ch2; do { if (NULL == inHexString || NULL == outHex) { printf("error: inHexString or outHex is null! "); break; } len = strlen(inHexString); if (len <= 1) { printf("error: strlen(inHexString) <= 1! "); break; } len &= ~1; for (i=0; i<len; i+=2) { ch1 = inHexString[i]; ch2 = inHexString[i+1]; outHex[i/2 + 1] = 0; if (isxdigit(ch1) && isxdigit(ch2)) { ch1 = oneHexCharToHex(ch1); ch2 = oneHexCharToHex(ch2); outHex[i/2] = (ch1 << 4) | ch2; } else { printf("error: %c or %c is not hex digit! ", ch1, ch2); goto exit; } } success = 0;//OK } while (0); exit: return success; } #define TEST_ChangeTHEX2CPTR #ifdef TEST_ChangeTHEX2CPTR static void printf_outHex(const char * outHex) { int len = strlen(outHex); int i; for (i=0; i<len; i++) { printf("0x%x,", outHex[i] & 0xff); } printf(" "); } void test_ChangeTHEX2CPTR(void) { char buffer[256] = {0}; ChangeTHEX2CPTR("E", buffer); printf_outHex(buffer); ChangeTHEX2CPTR("E5BC35", buffer); printf_outHex(buffer); ChangeTHEX2CPTR("EX4", buffer); printf_outHex(buffer); ChangeTHEX2CPTR("E5B", buffer); printf_outHex(buffer); } #endif //-------------------------------------------------------------------
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: [android]EditText的一些设置
- 下一篇:没有了