📄 convstr.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 + -