发两个函数刚学习C练习的。

xhz2000 2011-12-06 11:34:27
不知道写的是否正确! 初略测试是可以的。还请各位大侠指教.

//十六进制字符串转换为整型
int HexToInt(char *HexSz)
{
char szValue;
int i, iLen, iResult;
iResult = 0;
iLen = strlen(HexSz);
for (i = 0; i < iLen; i++)
{
szValue = *HexSz;
//不是数据0-9那么就是字母(a-f或A-F)把字母转换为大写字母
if (szValue > 57) szValue = (szValue & 0xDF);
switch (szValue)
{
case 48: iResult = iResult<<4; iResult = iResult | 0; break; //0
case 49: iResult = iResult<<4; iResult = iResult | 1; break; //1
case 50: iResult = iResult<<4; iResult = iResult | 2; break; //2
case 51: iResult = iResult<<4; iResult = iResult | 3; break; //3
case 52: iResult = iResult<<4; iResult = iResult | 4; break; //4
case 53: iResult = iResult<<4; iResult = iResult | 5; break; //5
case 54: iResult = iResult<<4; iResult = iResult | 6; break; //6
case 55: iResult = iResult<<4; iResult = iResult | 7; break; //7
case 56: iResult = iResult<<4; iResult = iResult | 8; break; //8
case 57: iResult = iResult<<4; iResult = iResult | 9; break; //9
case 65: iResult = iResult<<4; iResult = iResult | 10; break; //A
case 66: iResult = iResult<<4; iResult = iResult | 11; break; //B
case 67: iResult = iResult<<4; iResult = iResult | 12; break; //C
case 68: iResult = iResult<<4; iResult = iResult | 13; break; //D
case 69: iResult = iResult<<4; iResult = iResult | 14; break; //E
case 70: iResult = iResult<<4; iResult = iResult | 15; break; //F
}
HexSz++;
}
return iResult;
}

//整形转换为十六进制字符
void IntToHex(unsigned int iData, char *szHex, int iLen)
{
int i;
unsigned int iHexValue, iValue;
i = 0;
iValue = iData;
while ((i < 8) && (i < iLen))
{
iHexValue = (iValue & 0xF0000000);
iHexValue = (iHexValue >> 28);
switch (iHexValue)
{
case 0: szHex[i] = 48; break; //0
case 1: szHex[i] = 49; break; //1
case 2: szHex[i] = 50; break; //2
case 3: szHex[i] = 51; break; //3
case 4: szHex[i] = 52; break; //4
case 5: szHex[i] = 53; break; //5
case 6: szHex[i] = 54; break; //6
case 7: szHex[i] = 55; break; //7
case 8: szHex[i] = 56; break; //8
case 9: szHex[i] = 57; break; //9
case 10: szHex[i] = 65; break; //A
case 11: szHex[i] = 66; break; //B
case 12: szHex[i] = 67; break; //C
case 13: szHex[i] = 68; break; //D
case 14: szHex[i] = 69; break; //E
case 15: szHex[i] = 70; break; //F
}
i++;
iValue = iValue << 4;
}
}
...全文
83 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyh12345 2011-12-06
  • 打赏
  • 举报
回复
字符转数字可以这样:
char c = '9';
int n = c - '0';
c = 'b';
n = c - 'a' + 10;
w28050 2011-12-06
  • 打赏
  • 举报
回复
程序太长,完全不想看
薛定谔之死猫 2011-12-06
  • 打赏
  • 举报
回复
好长,可以文艺一点,用sprintf搞定~
xhz2000 2011-12-06
  • 打赏
  • 举报
回复
程序太长,完全不想看

其实不长啊! 是两个函数呢!每个函数就25行左右!

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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