十进制数转化为十六进制数

时间:2021-05-31 22:24:29
在dialog based 框架里的图形编辑对话框里拖了一个按钮和两个edit控件,在edit控件1中输入一double 型十进制数,在单击按钮后想在edit2控件中得到对应的16进制数。请大家帮忙

13 个解决方案

#1


double 型十进制数转16进制数?
一般是整数转整数itoa

#2


itoa(n,s,16);

#3


CString CSegInfo::algorismtohex(int algorism)//十六进制转换
{
CString str;
switch(algorism)
{
case 10:
str="A";
break;
case 11:
str="B";
break;
case 12:
str="C";
break;
case 13:
str="D";
break;
case 14:
str="E";
break;
case 15:
str="F";
break;
default:
str.Format("%d",algorism);
}
return str;
}
void mydialog::OnButton()
{UpdateData();
m_edit2=algorismtohex(m_edit1);]
UpdateData(FALSE);
}
edit1 int型
edit2 CString型

#4


CString DecToHex(CString strDec)
{
  double dblData = 0;
  char   chsData[128];
  CString strHec;
  sscanf(strDec.GetBuffer(strDec.GetLength()),"%f",&dblData);
  strHec.Format("%x", dblData);

  return strHec;
}

#5


CString DecToHex(CString strDec)
{
  double dblData = 0;
  CString strHec;
  sscanf(strDec.GetBuffer(strDec.GetLength()),"%f",&dblData);
  strHec.Format("%x", dblData);

  return strHec;
}

#6


int n;
char s[32];
itoa(n,s,16);

#7


青松崖:
   我输入的十进制数是double型的,不是Cstring型的.不知道double型变量如何向Cstring型变量转化?我不明白sscanf(strDec.GetBuffer(strDec.GetLength()),"%f",&dblData);作什么用;strHec.Format("%x", dblData);是不是实现了转化功能?拖了一个按钮和两个edit控件,在edit控件1中输入一double 型十进制数(对应为m_shadow11),在单击按钮(映射函数为void CRSADlg::OnDecToHex() )后想在edit2控件(对应为m_hex)中得到对应的16进制数,


帮我填一下下面的函数以完成我想要的功能好吗?

void CRSADlg::OnDecToHex() 
{
  UpdateData(true);

????????
  
  UpdateData(false);
}

#8


一般 只有 10进制整数才有对应的整数 16进制,比如 15 == 0xF.
可你居然要把 double 转成 16进制, 
那么你说说,如果你输入 double(0.5),你期望看见的 16进制是 0x多少?

#9


icansaymyabc:

那可以把输入的十进制数改为整型.
拖了一个按钮和两个edit控件,在edit控件1中输入一整型十进制数(对应为m_shadow11),再单击按钮(映射函数为void CRSADlg::OnDecToHex() )后想在edit2控件(对应为m_hex)中得到对应的16进制数,
还有,我不明白sscanf(strDec.GetBuffer(strDec.GetLength()),"%f",&dblData);作什么用;strHec.Format("%x", dblData);是不是实现了转化功能?

下面的函数应该如何写?

void CRSADlg::OnDecToHex() 
{
  UpdateData(true);

????????
  
  UpdateData(false);
}

#10


一般使用16进制数是字符传形式
void CDlgDlg::OnOK() 
{
UpdateData(true);
CString m_sHex;
int m_Int;
m_Int = m_DoubleData;//m_DoubleData为Edit1的Double类型变量
m_sHex.Format("%x",m_Int);
GetDlgItem(IDC_EDIT2)->SetWindowText(m_sHex);
UpdateData(false);
}

#11


小数位如果要转换那就要看你的编码规则了

#12


crystal521(※水晶※【软→硬】) 
    非常感谢,小数位不要转换.好象不考滤数据类型也可以,比如:
    
void CRSADlg::OnDecToHex() 
{
    CString str1;
    GetDlgItem(IDC_shadow11)->GetWindowText(str1);
    int n = atoi(str1.GetBuffer(0));
    char ch[20];
    memset(ch,0,20);
    itoa(n,ch,16);
    m_hex = ch;
    GetDlgItem(IDC_hex)->SetWindowText(m_hex);
}
经调试通过了.
若得到16进制数后,想得到他的长度,比如说得到 1a2 后,可以显示长度为3,并输出,不知怎么编码
呵呵,帮个忙吧 

#13


用k=m_sHex.GetLength();得不到结果

#1


double 型十进制数转16进制数?
一般是整数转整数itoa

#2


itoa(n,s,16);

#3


CString CSegInfo::algorismtohex(int algorism)//十六进制转换
{
CString str;
switch(algorism)
{
case 10:
str="A";
break;
case 11:
str="B";
break;
case 12:
str="C";
break;
case 13:
str="D";
break;
case 14:
str="E";
break;
case 15:
str="F";
break;
default:
str.Format("%d",algorism);
}
return str;
}
void mydialog::OnButton()
{UpdateData();
m_edit2=algorismtohex(m_edit1);]
UpdateData(FALSE);
}
edit1 int型
edit2 CString型

#4


CString DecToHex(CString strDec)
{
  double dblData = 0;
  char   chsData[128];
  CString strHec;
  sscanf(strDec.GetBuffer(strDec.GetLength()),"%f",&dblData);
  strHec.Format("%x", dblData);

  return strHec;
}

#5


CString DecToHex(CString strDec)
{
  double dblData = 0;
  CString strHec;
  sscanf(strDec.GetBuffer(strDec.GetLength()),"%f",&dblData);
  strHec.Format("%x", dblData);

  return strHec;
}

#6


int n;
char s[32];
itoa(n,s,16);

#7


青松崖:
   我输入的十进制数是double型的,不是Cstring型的.不知道double型变量如何向Cstring型变量转化?我不明白sscanf(strDec.GetBuffer(strDec.GetLength()),"%f",&dblData);作什么用;strHec.Format("%x", dblData);是不是实现了转化功能?拖了一个按钮和两个edit控件,在edit控件1中输入一double 型十进制数(对应为m_shadow11),在单击按钮(映射函数为void CRSADlg::OnDecToHex() )后想在edit2控件(对应为m_hex)中得到对应的16进制数,


帮我填一下下面的函数以完成我想要的功能好吗?

void CRSADlg::OnDecToHex() 
{
  UpdateData(true);

????????
  
  UpdateData(false);
}

#8


一般 只有 10进制整数才有对应的整数 16进制,比如 15 == 0xF.
可你居然要把 double 转成 16进制, 
那么你说说,如果你输入 double(0.5),你期望看见的 16进制是 0x多少?

#9


icansaymyabc:

那可以把输入的十进制数改为整型.
拖了一个按钮和两个edit控件,在edit控件1中输入一整型十进制数(对应为m_shadow11),再单击按钮(映射函数为void CRSADlg::OnDecToHex() )后想在edit2控件(对应为m_hex)中得到对应的16进制数,
还有,我不明白sscanf(strDec.GetBuffer(strDec.GetLength()),"%f",&dblData);作什么用;strHec.Format("%x", dblData);是不是实现了转化功能?

下面的函数应该如何写?

void CRSADlg::OnDecToHex() 
{
  UpdateData(true);

????????
  
  UpdateData(false);
}

#10


一般使用16进制数是字符传形式
void CDlgDlg::OnOK() 
{
UpdateData(true);
CString m_sHex;
int m_Int;
m_Int = m_DoubleData;//m_DoubleData为Edit1的Double类型变量
m_sHex.Format("%x",m_Int);
GetDlgItem(IDC_EDIT2)->SetWindowText(m_sHex);
UpdateData(false);
}

#11


小数位如果要转换那就要看你的编码规则了

#12


crystal521(※水晶※【软→硬】) 
    非常感谢,小数位不要转换.好象不考滤数据类型也可以,比如:
    
void CRSADlg::OnDecToHex() 
{
    CString str1;
    GetDlgItem(IDC_shadow11)->GetWindowText(str1);
    int n = atoi(str1.GetBuffer(0));
    char ch[20];
    memset(ch,0,20);
    itoa(n,ch,16);
    m_hex = ch;
    GetDlgItem(IDC_hex)->SetWindowText(m_hex);
}
经调试通过了.
若得到16进制数后,想得到他的长度,比如说得到 1a2 后,可以显示长度为3,并输出,不知怎么编码
呵呵,帮个忙吧 

#13


用k=m_sHex.GetLength();得不到结果