⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 convstr.h

📁 这是一个电力多功能电表的参数设置工具软件
💻 H
字号:
#ifndef convstrH
#define convstrH
#endif

#include <stdio.h>

int  hex2bin(unsigned char *hex_str, unsigned char *bin_str);
int  bin2hex(unsigned char *bin_str, int len, unsigned char *hex_str);
int  hex1char_to_num(char hex1char);

int  hex2bin(unsigned char *hex_str, unsigned char *bin_str)
/*
   "ba087d4012345678" -> {0xba, 0x08, 0x7d, 0x40, 0x12, 0x34, 0x56, 0x78}
   For ASCII string and OS, not for EBCDIC string and OS.
   Return:  > 0 --- bin_str length
            < 0 --- error

   M.L.Y  1999.12.28
*/
{
  int  i, j, n;
  int  c1, h1, h2;
  unsigned char *sh = hex_str, *sb = bin_str;

  n = strlen(sh);
  if(n < 2) return -1;
  if(n % 2 != 0) return -2;
  for(i = 0, j = 0; i < n; j++)
  {
    if((h1 = hex1char_to_num(sh[i++])) < 0) return -1;
    if((h2 = hex1char_to_num(sh[i++])) < 0) return -1;
    c1 = h1 << 4 | h2;
    sb[j] = c1;
  }
  return j;
}

/* ------------------------------------------------------------------------- */
int  bin2hex(unsigned char *bin_str, int len, unsigned char *hex_str)
/*
   {0xba, 0x08, 0x7d, 0x40, 0x12, 0x34, 0x56, 0x78} -> "ba087d4012345678"
   For ASCII string and OS, not for EBCDIC string and OS.
   Return:  > 0 --- hex_str length
            < 0 --- error

   M.L.Y  1999.12.28
*/
{
  int  i, j;
  unsigned char *sb = bin_str, *sh = hex_str;

  for(i = 0, j = 0; i < len; i++, j+=2)
    sprintf((char *)sh+j, "%02X", sb[i]);
  sh[j] = NULL;
  return j;
}
int  hex1char_to_num(char hex1char)
/*
   'a' or 'A' -> 10, '1' -> 1
   If hex1char not in '0'-'9','A'-'F','a'-'f' return -1
*/
{
  if(hex1char >= '0' && hex1char <= '9') return hex1char - '0';
  if(hex1char >= 'A' && hex1char <= 'F') return hex1char - 'A' + 10;
  if(hex1char >= 'a' && hex1char <= 'f') return hex1char - 'a' + 10;
  return -1;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -