十六进制转十进制

bphantom 2009-02-06 06:00:52
头疼。
int j=11;
BYTE b[10];

b[0]=0x11;是可以的。
问题是我的int j=11中的11,本来我就需要他是hex的11
b[0]=0xj??????不行吧。
简单点说就是
int HexToInt(int nHex)
{
?????????
}
执行HexToInt(11)返回的值要是10进制的17
上面的函数怎么写??
...全文
590 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hemiya 2009-02-06
  • 打赏
  • 举报
回复

//---------------------------------------------------------------------------
// 十六进制字符转字符,例如:"41"='A',字符不符合抛出异常,整型0
// 0x30是'0'-0x00,0x37是'A'-0x0A,0x57是'a'-0x0A
//---------------------------------------------------------------------------
char __fastcall HexCharToChar(char hChar, char lChar)
{
if ((hChar >= '0') && (hChar <='9'))
hChar -= 0x30;
else if ((hChar >= 'A') && (hChar <='F'))
hChar -= 0x37;
else if ((hChar >= 'a') && (hChar <='f'))
hChar -= 0x57;
else
throw 0;

if ((lChar >= '0') && (lChar <='9'))
lChar -= 0x30;
else if ((lChar >= 'A') && (lChar <='F'))
lChar -= 0x37;
else if ((lChar >= 'a') && (lChar <='f'))
lChar -= 0x57;
else
throw 0;

return (hChar << 4) + lChar;
}

// 使用
std::string j = "11";
b[0] = HexCharToChar(j[0], j[1]);
hemiya 2009-02-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jixingzhong 的回复:]
int HexToInt(int nHex)
{
int decimal=0;
if( nHex>9 )
{
decimal += HexToInt(nHex/10)*16+nHex%10;
}
else decimal = nHex;

return decimal;
}

int main ()
{
int decimal = HexToInt(11);
printf("HexToInt(11) == %d\n", decimal);
return 0;
}
[/Quote]

脱裤子放屁,误导人.
int decimal = HexToInt(11); 此处我要是这么写呢?int decimal = HexToInt(FF);

楼主要么
int j=0x11;
要么 string hexj="11";
再把hexj转为int赋值给b[0].
Leaning 2009-02-06
  • 打赏
  • 举报
回复
http://download.csdn.net/source/988714
jixingzhong 2009-02-06
  • 打赏
  • 举报
回复
想想手工换算如何进行,代码就是实现这个算法而已...
jixingzhong 2009-02-06
  • 打赏
  • 举报
回复
int HexToInt(int nHex)
{
int decimal=0;
if( nHex>9 )
{
decimal += HexToInt(nHex/10)*16+nHex%10;
}
else decimal = nHex;

return decimal;
}

int main ()
{
int decimal = HexToInt(11);
printf("HexToInt(11) == %d\n", decimal);
return 0;
}
hemiya 2009-02-06
  • 打赏
  • 举报
回复
电脑里没有0x,16进制这个东西,这个是人为的.
int j是0x11还是17,为int数值都一样.
楼主的意思是要int j的16进制字符吧.
donglianwu 2009-02-06
  • 打赏
  • 举报
回复
下面的函数仅用C语句完成,不使用任何库函数:

int HexToInt(int nHex)
{
int sum, power, digit;

sum = 0;
power = 1;

while(nHex != 0)
{
digit = nHex & 0x0f;
nHex = nHex >> 8; (惭愧,本行应改为:nHex = nHex >> 4 )
sum += power * digit;
power *= 16;
}

return sum;
}
donglianwu 2009-02-06
  • 打赏
  • 举报
回复
下面的函数仅用C语句完成,不使用任何库函数:

int HexToInt(int nHex)
{
int sum, power, digit;

sum = 0;
power = 1;

while(nHex != 0)
{
digit = nHex & 0x0f;
nHex = nHex >> 8;
sum += power * digit;
power *= 16;
}

return sum;
}
做鸡真好吃 2009-02-06
  • 打赏
  • 举报
回复
mark~
cnzdgs 2009-02-06
  • 打赏
  • 举报
回复
// #include <stdlib.h>
int HexToInt(int nHex)
{
char buffer[10];

_ltoa(nHex, buffer, 10);
return strtol(buffer, NULL, 16);
}

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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