C++中Long转换成16进制字符串

C++求教啊!!
我得到了一个Long类型的数101010,想转换成 “AAA”,请问如何处理啊?

第1个回答  2015-07-31
#include <stdio.h>
void main()
{
long n=101010;
while( n )
{
printf("%X", n%100 );
n/=100 ;
}
}
这样试一下追问

你这个不错,有个问题就是,怎么不是2位的呢? 比如1200,你转出来的是 10,C
而不是 10,0C
我怎么去存放转换后的数据呢?
比如 unsigned char* p=。。。。

追答

你给个具体实例,如,1200转换结果是什么样子?存储可用数组保存结果

追问

int=1200
转成
unsigned char* p={0x0c,0x00}或者 unsigned char* p={0x00,0x0c}
都可以!!
最好是低字节在前,高字节在后!!

追答

我现在用的手机,打字较麻烦,你定义一个数组,如,unsugned char a[10],*p=a;用上面的方法给数组赋值即可int i=0; {a[i++]=n%100;……}

按16进制输出数组,就是你想要的结果

本回答被提问者和网友采纳
第2个回答  2015-07-31
说清楚,是打算把10转换为0x0A,还是字母‘A’追问

就是int转16进制

追答

int转16进制,是逐字节转,还是整体转?
你举的例子像是逐字节转,可那如果是1617呢,还转不转?

追问

101010 可看成10 10 10 转成16进制就是 A A A
然后转成我要的是字符串"AAA",就这个!!
如果不足偶数 例如 10101 就补0 成010101
转成16进制就 1 1 1 ,然后转成我想要的字符串"111"
就这个效果,

追答

沟通了半天还是无效。我问你,1617你转成什么?

追问

1617你转成什么?转成 "1011"
十进制16对应16进制10
十进制17对应16进制11 所以就是"1011"
这样嘛,大神,谢谢你耐心的解答哈
这样,搞个简单点的
比如有 int N=1216 转换成unsigned char* 类型的数据
也就是unsigned char* P={0x0c,0x0f}
如果高位在后的话就更好了 unsigned char* P={0x0f,0x0c};