字符串转换为16进制

字符串转换为16进制问题 将一个字符串转换为 16 进制数 例如 12 转换为 0x12 转换为 0x

大家好,欢迎来到IT知识分享网。

问题
将一个字符串转换为16进制数,例如“12”转换为0x12, “”转换为0x。
注意: 转换前每一个字符占用一个字节,转换后两个数字占用一个字节,如“”占用8个字节,转换后占用四个字节:0x12, 0x34, 0x56, x078.
实现


#include <stdio.h> #include <ctype.h> int char2bcd(char str, unsigned char *value) { 
    if(!str || !value){ 
    return -1; } if(isdigit(str)){ 
    *value = str - '0'; }else if(islower(str)){ 
    *value = str - 'a' + 10; }else if(isupper(str)){ 
    *value = str- 'A' + 10; }else{ 
    return -1; } return 0; } int getValueFromStr(char *string, unsigned int length, unsigned char *value) { 
    int i, ret; unsigned char p,q; if(!string || length < 0 || length>8){ 
    return -1; } //*value = 0; if(length%2){ 
    ret = char2bcd(string[0], &p); if(ret<0){ 
    return -1; } value[0] = p; for( i =1 ;i< ((length+1)>>1); i++){ 
    ret = char2bcd(string[2*i - 1], &p); if(ret < 0){ 
    return -1; } ret = char2bcd(string[2*i], &q); if(ret < 0){ 
    return -1; } //*value = (*value << 8) + (p << 4) + q; value[i] = (p << 4) + q; } }else{ 
    for( i =0 ;i< (length>>1); i++){ 
    ret = char2bcd(string[2*i], &p); if(ret < 0){ 
    return -1; } ret = char2bcd(string[2*i + 1], &q); if(ret < 0){ 
    return -1; } //*value = (*value << 8) + (p << 4) + q; value[i] = (p << 4) + q; } } return 0; } 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/129055.html

(0)
上一篇 2025-08-26 22:15
下一篇 2025-08-26 22:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信