字符字符串转十六进制字符串 和 十六进制字符串转字符字符串

本文提供了一种将字符字符串转换为十六进制字符串的方法,并实现了逆向转换。通过两个核心函数,StringToHex 和 hexToStr,实现了字符与十六进制之间的相互转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符字符串转十六进制字符串

void StringToHex(char *in,char *out)

{

    int high,low;

    while(*in)

    {

        high=(*in)>>4;

        low=(*in)&0xF;

        *(out++)=high>9 ? high-10+'a' : high+'0';

        *(out++)=low>9 ? low-10+'a' : low+'0';

        in++;

    }

    *out='\0';

}

//   十六进制字符串转字符字符串

int hexCharToValue(const char ch){

  int result = 0;

  //获取16进制的高字节位数据

  if(ch >= '0' && ch <= '9'){

    result = (int)(ch - '0');

 }

  else if(ch >= 'a' && ch <= 'z'){

   result = (int)(ch - 'a') + 10;

  }

  else if(ch >= 'A' && ch <= 'Z'){

    result = (int)(ch - 'A') + 10;

  }

  else{

    result = -1;

  }

  return result;

}

int hexToStr(char *hex, char *ch)

{
  int high,low;
  int tmp = 0;

  if(hex == NULL || ch == NULL){

    return -1;

  }

 

  if(strlen(hex) %2 == 1){

    return -2;

  }

 

  while(*hex){

    high = hexCharToValue(*hex);

    if(high < 0){
      *ch = '\0';

      return -3;

    }

    hex++; //指针移动到下一个字符上

    low = hexCharToValue(*hex);

    if(low < 0){

      *ch = '\0';

      return -3;

    }

    tmp = (high << 4) + low;

    *ch++ = (char)tmp;

    hex++;

  }

  *ch = '\0';

  return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值