下面是我从网上搜来的c语言Ascii <-> Hex的函数(不知道可用否?),我对c语言不熟,不太会用这些函数。
假如我声明字符数组如下:
unsigned char pwd[6] = "\0";
unsigned char hex_pwd[6]="\0";
应使用什么样的赋值语句让pwd字符数组的内容为:"SUN435",再就是我应该如何调用下面的函数来做Ascii <-> Hex的转换呢,最好给个实际调用代码供我学学。谢谢!//函 数 名:CharToHex()
//功能描述:把ASCII字符转换为16进制
//函数说明:
//调用函数:
//全局变量:
//输    入:ASCII字符
//返    回:16进制
/////////////////////////////////////////////////////////////////////
unsigned char CharToHex(unsigned char bHex){
  if((bHex>=0)&&(bHex<=9))
      bHex += 0x30;
  else if((bHex>=10)&&(bHex<=15))//大写字母
      bHex += 0x37;
  else bHex = 0xff;
  return bHex;
}
/////////////////////////////////////////////////////////////////////
//函 数 名:HexToChar()
//功能描述:把16进制转换为ASCII字符
//函数说明:
//调用函数:
//全局变量:
//输    入:16进制
//返    回:ASCII字符
/////////////////////////////////////////////////////////////////////
unsigned char HexToChar(unsigned char bChar){
  if((bChar>=0x30)&&(bChar<=0x39))
      bChar -= 0x30;
  else if((bChar>=0x41)&&(bChar<=0x46))//大写字母
      bChar -= 0x37;
  else if((bChar>=0x61)&&(bChar<=0x66))//小写字母
      bChar -= 0x57;
  else bChar = 0xff;
  return bChar; 
}

解决方案 »

  1.   

    另外,若pwd字符数组的内容为:"SUN435"的话,声明:
    unsigned char pwd[6] = "\0";
    unsigned char hex_pwd[6]="\0";
    它们的下标个数够用吗?这样声明对吗?
      

  2.   

    unsigned char pwd[6] = "aaa12";
    unsigned char hex_pwd[6]= {0};
    字符->Hex
    for(int i=0;i<6;i++) pwd[i] = CharToHex(pwd[i]);
    Hex->字符
    for(int i=0;i<6;i++) pwd[i] = HexToChar(pwd[i]);
      

  3.   

    to wuyazhe:
    一个Asicc字节是8bit,对应两个16进制码,你给的代码对吗?
      

  4.   

    unsigned char CharToHex(unsigned char bHex)
    unsigned char HexToChar(unsigned char bChar)
    你看函数签名,本就是按字节转换的。
    一个ASCII是8个位,废话,这都知道。
    这里的字符不是ascii,只是数字的16进制下显示的字符串,一个字符表示半个字节,例如你实际有个字节流
    0xAABBCC
    文本中就是"AABBCC"
    你说着一个A表示多少?0~F之间的而已。
    A->10
    一个字当然最多表示半个自己,没任何问题。
    看清函数签名和功能。关键是要知道你自己想做什么。否则一会这样一会那样,越说越糊涂。
      

  5.   

    数字:
    十进制:255
    十六进制:0xFF
    如果记录这个为字符串"FF"
    所以255是占1个字节,0xFF也占1个字节,但如果转换字符串表示"FF"就占2个字节,F就表示0~15。
      

  6.   

    //ASCII字符串转16进制数
                string s= "";
                byte[] ba = System.Text.ASCIIEncoding.Default.GetBytes(s);
                StringBuilder sb = new StringBuilder();
                foreach (byte b in ba)
                {
                    sb.Append(b.ToString("x") + " ");
                }
    string hexstr = ((int)STR[0]).ToString("x");