怎样将char型的十进制数据转换成十六进制的数据?

时间:2022-01-11 19:13:20
怎样将char型的十进制数据转换成十六进制的数据?
部分程序如下:
CString str;
char data[300][20];
str.Format("%x",data[j]); //转换成十六进制
m_list.SetItemText(i, k, str); 

数组data是读文件读取的数据,data里面的数据如下:10,98,102,104。
但是输出的在控件上显示的却是:124d754,124d758,124d77c,124d790
我觉得我的程序应该没问题呀,请教高手,为什么输出的不是对应的十六进制的数?

10 个解决方案

#1


你这是指针数组,data[j]是指针地址,不是数据。

str.Format("%x",data[i][j]);

#2


先把data数组转换为整数,再用str.Format

#3


我写的代码:
CString str = "";
CString strAll = "";
char data[300][20];
for (int i = 0; i < 300; i++)
{
     for (int j = 0; j < 20; j++ )
     { 
          str.Format("%02x ",data[i][j]); //转换成十六进制
           strAll += str;
      }
}
m_edit = strAll;  

#4


以上几种方法我都试了,还是不行,输出的结果完全不对呀。。

#5


试试 str.Format(_T("%02X"), (UINT)data[i][j]); 

#6


先atoi嘛
str.Format("%x",atoi(data[j]));

#7


printf( "%x", atoi( char ) );

#8


引用 4 楼  的回复:
以上几种方法我都试了,还是不行,输出的结果完全不对呀。。


str.Format(_T("%x"),data[i][j]);
有什么问题?输出什么?

#9


应该是要atoi 先转的

#10


long ltemp;
for(i=0; i<300; i++)
{
  ltemp = strtol(data[i],NULL,10);
  str.Format("%x",ltemp );
}

#1


你这是指针数组,data[j]是指针地址,不是数据。

str.Format("%x",data[i][j]);

#2


先把data数组转换为整数,再用str.Format

#3


我写的代码:
CString str = "";
CString strAll = "";
char data[300][20];
for (int i = 0; i < 300; i++)
{
     for (int j = 0; j < 20; j++ )
     { 
          str.Format("%02x ",data[i][j]); //转换成十六进制
           strAll += str;
      }
}
m_edit = strAll;  

#4


以上几种方法我都试了,还是不行,输出的结果完全不对呀。。

#5


试试 str.Format(_T("%02X"), (UINT)data[i][j]); 

#6


先atoi嘛
str.Format("%x",atoi(data[j]));

#7


printf( "%x", atoi( char ) );

#8


引用 4 楼  的回复:
以上几种方法我都试了,还是不行,输出的结果完全不对呀。。


str.Format(_T("%x"),data[i][j]);
有什么问题?输出什么?

#9


应该是要atoi 先转的

#10


long ltemp;
for(i=0; i<300; i++)
{
  ltemp = strtol(data[i],NULL,10);
  str.Format("%x",ltemp );
}