-1

如何从 C 中的 windows API 设计中的文本框中检索输入的整数值以将它们转换为字符串,然后通过 C 中的静态标签以十六进制数字显示这些值。

代码:

    GetWindowText(hwndtext1, hexval, 256);

    for (i = sizeof(hexval); i >= 0; i--)
      {     
        buf[i] = atoll(hexval);

        ulltoa(buf[i], szBuffer, 16);
        SetWindowText(hwndStatic3, szBuffer);

        }

--------编辑-------- 我希望能够根据十进制输入显示十六进制数字。因此,在我用 c 开发的 GUI 上,我可以在文本框中写入十进制数字,并且我想在单独的文本框中显示十进制的十六进制值。

- - - - - - -编辑 - - - - - - - - -

我稍微修复了代码,现在只显示十六进制数的最后一个字节。

例如。如果十进制输入是 2000.... 十六进制输出仅显示 d0。当正确的十六进制输出应该是 7d0。

4

1 回答 1

0

此函数将整数值转换为 0x0 格式的十六进制字符串。第一个 int 是您的数字,第二个实际上需要一个 char(通常是 'a' 或 'A')来确定 10 到 15 个字符。

char *dtox(int d, int c){
static char buf[80];
if (0==d)return "0x0";
int p=0;
c-=10;
if (0>d) { buf[p++]='-'; d=-d;}
buf[p++]='0';buf[p++]='x';
unsigned int i=1<<28;
while (i>d) i/=16;
while (0<i){
   ((d/i)>9) ? (buf[p++]=(c+(d/i))) : (buf[p++]=('0'+(d/i)));
   if (i<=d) d=d%i;
   i/=16;
}
buf[p]=0;
return buf;
}

我只发布这个,因为 itoa 是一个非标准函数,真正的问题可能是传递你的函数所期望的 buf[256] (一个 char 值)而不是 buf (一个 char 数组,又名字符串)

于 2013-02-17T17:55:58.657 回答