C++Builder int如何以16进制输出

环境:C++Builder 2009

首先我用fread从一个GBA ROM里读出了一串内容——因为是GBA ROM,所以读的时候不是按文本模式,直接用2进制模式读出来的。
但是读出来的东西最后让控件显示的时候会默认输出10进制,而我希望它输出的是16进制,所以在这里问问如何做。

在网上看到一些人说printf()就可以,但是很可惜,那个函数是输出到屏幕上的,控制台编程还有用,这VCL编程就没法用了。

用BCB的人本来就少,用2009的就更少了,不知道有人回答没,悬赏最高只能100分,哎……

c++Builder 输出 16进制

函数 IntToHex(int Value, int Digits);
返回 AnsiString

int a = 256;
IntToHex(a, 4);
返回 0100

int a = 256;
IntToHex(a, 6);
返回 000100

使用 sprintf也可以

添加
#include <stdio.h>

int a = 256;
char s[100];
sprintf(s, "%0x", a);//把结果放到字符串s里
Edit1->Text = s;

使用 API wsprintf

int a = 256;
char s[100];
wsprintf(s, "%0x", a);//把结果放到字符串s里
Edit1->Text = s;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-10

代码如下:

int a;
char ch[10];
char mid_char;
int temp = 0, i = 0;
printf("Please input the num:\n");
scanf("%d", &a);
 
while(a / 16 > 0)
{
    temp = a % 16;
    ch[i] = temp + 48;//字符比数字ASCII码大48
    i++;
    a = a / 16;
     
    if( a < 16 )
    {
        ch[i] = a + 48;//这样得到的结果是逆序的
        break;
    }
}
 
//调整一下顺序
temp = strlen(ch);
for(i = 0; i < strlen(ch)/2; i++)
{
    mid_char = ch[i];
    ch[i] = ch[temp - i - 1];
    ch[temp - i - 1] = mid_char;
}
 
printf("0x%s\n", ch);

第2个回答  2020-03-05
代码如下:
int a;
char ch[10];
char mid_char;
int temp = 0, i = 0;
printf("Please input the num:\n");
scanf("%d", &a);

while(a / 16 > 0)
{
temp = a % 16;
ch[i] = temp + 48;//字符比数字ASCII码大48
i++;
a = a / 16;

if( a < 16 )
{
ch[i] = a + 48;//这样得到的结果是逆序的
break;
}
}

//调整一下顺序
temp = strlen(ch);
for(i = 0; i < strlen(ch)/2; i++)
{
mid_char = ch[i];
ch[i] = ch[temp - i - 1];
ch[temp - i - 1] = mid_char;
}

printf("0x%s\n", ch);
第3个回答  2009-08-08
我只用过 C++Builder 6
楼上的好像连 C++Builder 6 也没用过。

比如Edit 的对应方法:

String s;
s.printf("%x", n);
Edit1->Text = s;

s.printf 的语法和 printf()到屏幕是一样的。
很好用,我经常用。
可以去查 AnsiString 的Help。
第4个回答  2009-08-08
printf和cout加参数应该都可以 用x%
标准库函数应该都有,跟用什么类库没关系吧
楼主试过么