C/C++ 十六进制char*与Binary char*相互转换

1. 十六进制char* 转 Binary char*

例如:“fedcba9876543210”

转换为:char bin[8] ={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10}形式。

代码:

/*两个字符转换成一个字符,长度为原来的1/2*/
static void Hex2Char(char *szHex, unsigned char *rch)
{
    int i;
    for(i=0; i<2; i++)
    {
        if(*(szHex + i) >=‘0‘ && *(szHex + i) <= ‘9‘)
            *rch = (*rch << 4) + (*(szHex + i) - ‘0‘);
        else if(*(szHex + i) >=‘a‘ && *(szHex + i) <= ‘f‘)
            *rch = (*rch << 4) + (*(szHex + i) - ‘a‘ + 10);
        else
            break;
    }
}
/*十六进制char* 转 Binary char*函数*/
void HexStr2CharStr( char *pszHexStr, int iSize,  char *pucCharStr)
{
    int i;
    unsigned char ch;
    if (iSize%2 != 0) return;
    for(i=0; i<iSize/2; i++)
    {
        Hex2Char(pszHexStr+2*i, &ch);
        pucCharStr[i] = ch;
    }
}

2. Binary char* 转 十六进制char*

例如:char bin[8] ={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10};

转换为:“fedcba9876543210”

代码:

/*单个字符转十六进制字符串,长度增大2被*/
static void Char2Hex(unsigned char ch, char *szHex)
{
    int i;
    unsigned char byte[2];
    byte[0] = ch/16;
    byte[1] = ch%16;
    for(i=0; i<2; i++)
    {
        if(byte[i] >= 0 && byte[i] <= 9)
            szHex[i] = ‘0‘ + byte[i];
        else
            szHex[i] = ‘a‘ + byte[i] - 10;
    }
    szHex[2] = 0;
}
/*字符串转换函数,中间调用上面的函数*/
void CharStr2HexStr( char *pucCharStr, int iSize,  char *pszHexStr)
{
    int i;
    char szHex[3];
    pszHexStr[0] = 0;
    for(i=0; i<iSize; i++)
    {
        Char2Hex(pucCharStr[i], szHex);
        strcat(pszHexStr, szHex);
    }
}
时间: 2024-09-08 14:29:07

C/C++ 十六进制char*与Binary char*相互转换的相关文章

Java之byte、char和String类型相互转换

1 package basictype; 2 3 /** 4 * byte.char和String类型相互转换 5 */ 6 public class CHJavaType { 7 public static void main(String[] args) { 8 String string = "abcd"; 9 10 // String转char[] 11 char[] chars = string.toCharArray(); 12 for (char c : chars) {

iOS出现 Undefined symbols for architecture armv7 std::basic_string&lt;char, std::char_traits&lt;char&gt;

Undefined symbols for architecture i386: “_OBJC_CLASS_$_XXX”, referenced from: objc-class-ref in XXX ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) 如果真机调试就是 undefined symb

char 与 unsigned char的本质区别

在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别. 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-127~127,unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,因此无论如何都能表示256个数字. 在实际使用过程种有什么区别呢?主要是符号位,但是在普通的赋值,读写文

const char*、char*、char* const、char[]、string的区别

1.const char* p: p is a pointer to const char(char const* p 一样)   意思就是不能通过p指针来修改p指向的内容(但是内容可以修改).2.char* p      : p is a pointer to char   意思就是可通过p指针来修改p指向的内容3.char* const p: p is a const pointer to char   意思就是p指针是一个常指针,他指向的内存地址不能变,定义的时候就得初始化   一旦给指针

char 与 unsigned char之间的坑

在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,因此无论如何都能表示256个数字. 在实际使用过程种有什么区别呢? 主要是符号位,但是在普通的赋值,读写

C语言char s[] 和 char *s的区别

C语言char s[] 和 char *s的区别,下面这个回答讲解的很清晰. The difference here is that char *s = "Hello world"; will place Hello world in the read-only parts of the memory and making s a pointer to that, making any writing operation on this memory illegal. While do

char*,const char*和string 三者转换

1. const char* 和string 转换 (1) const char*转换为 string,直接赋值即可. EX: const char* tmp = "tsinghua". string s = tmp; (2) string转换为const char*,利用c_str() EX:  string s = "tsinghua"; const char*tmp = s.c_str(); 2. char*和const char*之间的转换 (1) cons

char、signed char、unsigned char的区别

ANSI C 提供了3种字符类型,分别是char.signed char.unsigned char char相当于signed char或者unsigned char,但是这取决于编译器! 这三种字符类型都是按照1个字节存储的,可以保存256个不同的值. 不同的是取值范围signed char取值范围是 -128 到 127unsigned char 取值范围是 0 到 255 signed char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,

char *p 与char p[] 比较

所有的字符窜常量都被放在静态内存区 因为字符串常量很少需要修改,放在静态内存区会提高效率 例: char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc";