怎么把负数表示出来? 原本是十六进制表示的 0xFFFFF434这个是-3019用DWORD 怎么表示出来呢?互相是怎么转化的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://topic.csdn.net/t/20050825/14/4231036.html输入为一串十六进制字符串,返回十进制int数 如"0xAF60",你先要自己转换一下去掉"0x"变成"AF60",再输入 static int xatoi (char *cp) { int val; val = 0; while (*cp) { if (*cp >= 'a' && *cp <= 'f') val = val * 16 + *cp - 'a' + 10; else if (*cp >= 'A' && *cp <= 'F') val = val * 16 + *cp - 'A' + 10; else if (*cp >= '0' && *cp <= '9') val = val * 16 + *cp - '0'; else break; cp++; } return val; } 楼上的方法和我以前的方法一样笨。我现在用这个方法://16进制字符串转10进制数字,方法一:CString strHex = ???; // 16进制字符串int nDec;// 10进制数字sscanf(strHex, _T("%X"), %nDec);//16进制字符串转10进制数字,方法二:CString strHex = ???; // 16进制字符串int nDec;// 10进制数字nDec = _tcstoul(strHex, NULL, 16); 10进制数字转16进制字符串,方法一:CString strHex = _T(""); // 16进制字符串 int nDec = 123;// 10进制数字 strHex.Format(_T("%X"), nDec); 我现在用这个方法NET页面刷新方法总结 原本是十六进制表示的 0xFFFFF434 这个是-3020 负数表示:先取正;如-12 --> 12二进制:1100取反:(默认是16位,编译器不同就不一样)1111111111110011加1:1111111111110100十六进制:0X0FFF4; 不好意思,我在2楼的代码写错了一个%(把&错写为%了),怪不得我说我的回帖没反应呢。正确的如下,已验证通过,完成符合楼主的要求: //16进制字符串转10进制数字,方法一: CString strHex = _T("0xFFFFF434"); // 16进制字符串 DWORD dwDec = 0; // 10进制数字 sscanf(strHex, _T("%X"), &dwDec); CString str; str.Format(_T("%d"), dwDec); MessageBox(str); // =-3020,不是楼主说的-3019 //16进制字符串转10进制数字,方法二: CString strHex = _T("0xFFFFF434"); // 16进制字符串 DWORD dwDec;// 10进制数字 dwDec = _tcstoul(strHex, NULL, 16); CString str; str.Format(_T("%d"), dwDec); MessageBox(str); // =-3020,不是楼主说的-3019 //10进制数字转16进制字符串,方法一: CString strHex = _T(""); // 16进制字符串 DWORD dwDec = -3020; // 10进制数字 strHex.Format(_T("0x%X"), dwDec); MessageBox(strHex); // ="0xFFFFF434" 我用强制转换(int) (dword)解决了! CRichEditCtrl窗口重绘的消息响应函数是什么啊? 有谁了解cmmb的吗? 如何得到PowerPoint 里面的内容,如把PowerPoint 变成一系列的bmp图片!解决问题500分数相送! 自定义结构数组的串行化问题。 视图刷新的问题 主对话框的OnActivate怎么响应啊? classwizard用不了,在线等 推荐新手学习VC可读的书 vc中的picture控件如何放一个图形进去?100分 关于VC6.0断点不可用的问题 动态创建的对话框上的控件不能出现ToolTips提示? SDK编程tab control问题
如"0xAF60",你先要自己转换一下去掉"0x"变成"AF60",再输入
static int xatoi (char *cp)
{
int val;
val = 0;
while (*cp)
{
if (*cp >= 'a' && *cp <= 'f')
val = val * 16 + *cp - 'a' + 10;
else if (*cp >= 'A' && *cp <= 'F')
val = val * 16 + *cp - 'A' + 10;
else if (*cp >= '0' && *cp <= '9')
val = val * 16 + *cp - '0';
else
break;
cp++;
}
return val;
}
我现在用这个方法://16进制字符串转10进制数字,方法一:
CString strHex = ???; // 16进制字符串
int nDec;// 10进制数字
sscanf(strHex, _T("%X"), %nDec);//16进制字符串转10进制数字,方法二:
CString strHex = ???; // 16进制字符串
int nDec;// 10进制数字
nDec = _tcstoul(strHex, NULL, 16);
CString strHex = _T(""); // 16进制字符串
int nDec = 123;// 10进制数字
strHex.Format(_T("%X"), nDec);
二进制:1100
取反:(默认是16位,编译器不同就不一样)1111111111110011
加1:1111111111110100
十六进制:0X0FFF4;
CString strHex = _T("0xFFFFF434"); // 16进制字符串
DWORD dwDec = 0; // 10进制数字
sscanf(strHex, _T("%X"), &dwDec);
CString str;
str.Format(_T("%d"), dwDec);
MessageBox(str); // =-3020,不是楼主说的-3019 //16进制字符串转10进制数字,方法二:
CString strHex = _T("0xFFFFF434"); // 16进制字符串
DWORD dwDec;// 10进制数字
dwDec = _tcstoul(strHex, NULL, 16);
CString str;
str.Format(_T("%d"), dwDec);
MessageBox(str); // =-3020,不是楼主说的-3019 //10进制数字转16进制字符串,方法一:
CString strHex = _T(""); // 16进制字符串
DWORD dwDec = -3020; // 10进制数字
strHex.Format(_T("0x%X"), dwDec);
MessageBox(strHex); // ="0xFFFFF434"
(int) (dword)解决了!