发两个函数刚学习C练习的。
时间:2011-12-06
来源:互联网
不知道写的是否正确! 初略测试是可以的。还请各位大侠指教.
//十六进制字符串转换为整型
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;
}
}
//十六进制字符串转换为整型
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;
}
}
作者: xhz2000 发布时间: 2011-12-06
好长,可以文艺一点,用sprintf搞定~
作者: mscf 发布时间: 2011-12-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28