关于VC的十六进制的输入问题?请帮帮忙!

hogn 2006-01-23 02:00:24
如:
已知 CString k="0x8281"

现需要输入0x8281到一个wchar_t b;
即实现wchar_t b = 0x8281;

但是k是可变的,也就是说输入的十六进制数到b是可变的

请问应该怎么做?
...全文
150 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sailor_Song 2006-01-24
  • 打赏
  • 举报
回复
用iostream就可以实现的,
bestajian 2006-01-24
  • 打赏
  • 举报
回复
同意aa3000(杀手K) 的:
用unsigned long strtoul( const char *nptr, char **endptr, int base );
就好了,后面的base指定为16。
aa3000 2006-01-23
  • 打赏
  • 举报
回复
unsigned long strtoul( const char *nptr, char **endptr, int base );
Pipi0714 2006-01-23
  • 打赏
  • 举报
回复
不能用将字符串转换成数字的方法,假如字符串中有字符这种方法就不能处理了.例如 0x1FE0
Pipi0714 2006-01-23
  • 打赏
  • 举报
回复
1.读出输入的内容
2.可以通过一个标记例如空格来表示一个字节或者short的结束
3.循环次字符串

类似下面的方法:
if(pbRstData == NULL) return 0L;
*pbRstData = NULL;

int nTemp = 0;
TCHAR *tcTemp = szInfo;//szInfo就是输入的字符串 这是一个单字节BYTE,不是wchar_t
TCHAR *tcTemp1 = szInfo;

std::list<LONG> lstValue;

LONG lTempValue = 1,lValue = 0;

bool bexit = false;

while(!bexit)
{
if(*tcTemp == 0x20 || *tcTemp == '\0')
{
while(tcTemp1 < tcTemp)
{
if(*tcTemp1 >= 0x30 && *tcTemp1 <= 0x39)
{
lTempValue = *tcTemp1 - 0x30;
for(int i = 1; i < nTemp; i++)
{
lTempValue *= 10;
}

nTemp --;
lValue += lTempValue;
}
tcTemp1 ++;
}
lstValue.push_back(lValue);
lValue = 0;
nTemp = 0;
if(*tcTemp == '\0')
{
bexit = true;
}
else
{
tcTemp1 = tcTemp + 1;
}
}
else
{
nTemp ++;
}
tcTemp ++;
}

UINT lRst = (LONG)(lstValue.size());
if(lRst > 0)
{
if(uzus > 0 && lRst < uzus)
{
goto _exit_line;
}
if(bByte == false)
{
lRst *= 2;

}
*pbRstData = new BYTE[lRst + 1];
lRst = 0;
for(std::list<LONG>::iterator itr_temp = lstValue.begin();itr_temp != lstValue.end();itr_temp++)
{
(*pbRstData)[lRst++] = LOBYTE(LOWORD(*itr_temp));
if(bByte == false)
{
(*pbRstData)[lRst++] = HIBYTE(LOWORD(*itr_temp));
}
}
pbRstData[lRst] = 0;
}
_exit_line:
lstValue.clear();
return lRst;
Luckyqsh 2006-01-23
  • 打赏
  • 举报
回复
CString k = "0x8281";
char *stopstring;
int a = strtol(k,&stopstring,16);
boluoCTO 2006-01-23
  • 打赏
  • 举报
回复
查MSDN上面有很详细的例子
noneone 2006-01-23
  • 打赏
  • 举报
回复
_tscanf
hogn 2006-01-23
  • 打赏
  • 举报
回复
能否举个简单例子呢?
wenkui 2006-01-23
  • 打赏
  • 举报
回复
调上面的两个函数实现int到char的转换或反之的转换。
hogn 2006-01-23
  • 打赏
  • 举报
回复
不懂,能否详细一点
boluoCTO 2006-01-23
  • 打赏
  • 举报
回复
itoa(x,x,16)
atoi(x)

16,551

社区成员

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

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

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