Ascii <--> Hex

foxd 2010-08-11 09:18:44
下面是我从网上搜来的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;
}
...全文
212 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-08-11
  • 打赏
  • 举报
回复
//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");
兔子-顾问 2010-08-11
  • 打赏
  • 举报
回复
数字:
十进制:255
十六进制:0xFF
如果记录这个为字符串"FF"
所以255是占1个字节,0xFF也占1个字节,但如果转换字符串表示"FF"就占2个字节,F就表示0~15。
兔子-顾问 2010-08-11
  • 打赏
  • 举报
回复
unsigned char CharToHex(unsigned char bHex)
unsigned char HexToChar(unsigned char bChar)
你看函数签名,本就是按字节转换的。
一个ASCII是8个位,废话,这都知道。
这里的字符不是ascii,只是数字的16进制下显示的字符串,一个字符表示半个字节,例如你实际有个字节流
0xAABBCC
文本中就是"AABBCC"
你说着一个A表示多少?0~F之间的而已。
A->10
一个字当然最多表示半个自己,没任何问题。
看清函数签名和功能。关键是要知道你自己想做什么。否则一会这样一会那样,越说越糊涂。
foxd 2010-08-11
  • 打赏
  • 举报
回复
to wuyazhe:
一个Asicc字节是8bit,对应两个16进制码,你给的代码对吗?
兔子-顾问 2010-08-11
  • 打赏
  • 举报
回复
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]);
foxd 2010-08-11
  • 打赏
  • 举报
回复
请教如何调用这两个转换函数?
兔子-顾问 2010-08-11
  • 打赏
  • 举报
回复
代码没错。
这个看实际要求了。如果你声明的就长一点呗。
foxd 2010-08-11
  • 打赏
  • 举报
回复
另外,若pwd字符数组的内容为:"SUN435"的话,声明:
unsigned char pwd[6] = "\0";
unsigned char hex_pwd[6]="\0";
它们的下标个数够用吗?这样声明对吗?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧