首页
论坛
专栏
课程

vc中怎么将10进制整型转为16进制啊~~~~~~~~~~~~~~~~

2005-5-29 17:39 15159

vc中怎么将10进制整型转为16进制啊~~~~~~~~~~~~~~~~

lee
3
2005-5-29 17:39
15159
然后还有就是如何将16进制整型转为10进制

刚破了一个软件,正在做注册机。。。。

遇到了这个问题。。

[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (15)
小虾 10 2005-5-29 18:17
2
0
VB的,
Text1.Text = Hex(123456) '十进制转十六进制输出
Text2.Text = &H123456 '十六进制转十进制输出。

VC的:
char szBuffer[100] = {0};
char szFormat[6] = "%X-%d";
wsprintf(szBuffer,szFormat,12345,0x12345);
输出结果:3039-74565
grx 2005-5-29 18:17
3
0
Delphi 7中:
IntToHex() //10进制到16进制
StrToInt('$'+'A') //16进制到10进制

VC不懂。
lee 3 2005-5-29 18:43
4
0
谢谢!!!

汇编中如何实现啊。。。
北极星2003 25 2005-5-29 18:44
5
0
int a = 15 ;

cout << hex << a << endl ;

输出结果:F
小虾 10 2005-5-29 18:47
6
0
最初由 lee 发布
谢谢!!!

汇编中如何实现啊。。。

和VC的一样,只需调用wsprintf函数就行了。
lee 3 2005-5-29 18:59
7
0
DWORD m_sumber;
char buf[MAX_PATH];
CString str;
GetVolumeInformation("c:\\",NULL,0,&m_sumber,NULL,NULL,NULL,NULL);
str.Format("%ld",m_sumber);
memset(buf,0,sizeof(buf));
wsprintf(buf,"%X",str);
AfxMessageBox(buf);//这样的结果不对啊。。。。
小虾 10 2005-5-29 19:21
8
0
//改成这样试试。
DWORD m_sumber;
char buf[MAX_PATH];
//CString str; 这一句不要。
GetVolumeInformation("c:\\",NULL,0,&m_sumber,NULL,NULL,NULL,NULL);
//str.Format("%ld",m_sumber); 这一句也不要。
memset(buf,0,sizeof(buf));
wsprintf(buf,"%X",m_sumber); //改成m_sumber。
AfxMessageBox(buf);//这样的结果不对啊。。。。
lee 3 2005-5-29 19:26
9
0
最初由 小虾 发布
//改成这样试试。
DWORD m_sumber;
char buf[MAX_PATH];
//CString str; 这一句不要。
GetVolumeInformation("c:\\",NULL,0,&m_sumber,NULL,NULL,NULL,NULL);
........


这样确实转为16进制了。。但是是字符串啊。。。

我还要转为16进制整数。。。

atoi不行啊。。。不能将a-f进行转化。
小虾 10 2005-5-29 19:34
10
0
?我所说的就是将整数转成字符输出呀。
如果你要将字符转成整数只有自己写函数了,很简单的。
lee 3 2005-5-29 19:36
11
0
谢谢哦。。

麻烦了你好多次啊。。。呵呵~~~~~~~
wenglingok 26 2005-5-29 21:28
12
0
将字符转为整数用_atoi()
Pr0Zel 7 2005-5-29 22:51
13
0
10进制的数转为16进制的数?
没必要转啊,只要输出的时候化为16进制输出就可以了
如下面的VC代码:
int a=10; //10进制
int b=0x10; //16进制
int c;
c=a+b;
CString ss;
ss.Format("10进制:%d  16进制:%x",c,c);
lnn1123 13 2005-5-31 17:48
14
0
C语言怎么弄啊
#include <stdio.h>
main()
{
char name[80];
int a,b,c,sum;
sum=0;
printf("input your name:\n");
gets(name);
a=strlen(name);
for(b=0;b<a;b++)
{c=name;    我想把字符数组的ASC转化位16进制,怎么弄?
c=c<<4+c;
c=c%111;
sum=sum+c;};
sum=sum*sum;

汇编代码:
0040143A  |> 3E:0FBE942E F4>/MOVSX EDX,BYTE PTR DS:[ESI+EBP-10C]      依次取注册名ASC16进制
00401443  |. 8BC2           |MOV EAX,EDX                              转移
00401445  |. BF 6F000000    |MOV EDI,6F                               特殊值
0040144A  |. C1E0 04        |SHL EAX,4                                左移4位
0040144D  |. 03C2           |ADD EAX,EDX                              与原来值加
0040144F  |. 99             |CDQ                                      扩展,EDX清0
00401450  |. F7FF           |IDIV EDI                                 EAX=EAX/6F
00401452  |. 03DA           |ADD EBX,EDX                            除法的余数相加   
00401454  |. 46             |INC ESI
00401455  |. 3BF1           |CMP ESI,ECX
00401457  |.^7C E1          \JL SHORT .0040143A
huoshan 2005-6-1 02:55
15
0
FormatToHex(char *pOut,BYTE *pIn,int size)
{
  char dl,dh;
  for(int k=0;k<size;k++)
  {
    dl=pIn[k] & 0x0F;

         (dl<0xA)? pOut[3*k+1]=dl+0x30 : pOut[3*k+1]=dl+0x37;
                                               
        dh=(pIn[k] >> 4) & 0x0F;   
                                               
                 (dh<0xA)? pOut[3*k]=dh+0x30 : pOut[3*k]=dh+0x37;  
                                               
         pIn[3*k+2]=0x20;           
        }
}
使用的时候请务必保证pOut数组的大小
huoshan 2005-6-1 03:13
16
0
修正了一处错误
FormatToHex(char *pOut,BYTE *pIn,int size)
{
  char dl,dh;
  for(int k=0;k<size;k++)
  {
    dl=pIn[k] & 0x0F;

          pOut[3*k+1]=((dl<0xA)? dl+0x30 : dl+0x37);

  dh=(pIn[k] >> 4) & 0x0F;

      pOut[3*k]=((dh<0xA)? dh+0x30 : dh+0x37);

   pOut[3*k+2]=0x20;
  }
}

char asc[]="123";
static  char buf[100];
FormatToHex(buf,asc,sizeof(asc));
输出字符串--"31 32 33 00 "
游客
登录 | 注册 方可回帖
返回