首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C中将整数转换为Unicode字符串?

如何在C中将整数转换为Unicode字符串?
EN

Stack Overflow用户
提问于 2010-03-05 03:23:39
回答 5查看 6.8K关注 0票数 5

我正在做一个嵌入式USB项目的固件。我要使用的生产编程器会自动将序列号写入设备闪存中指定的存储地址。程序员将序列号存储为指定字节数的十六进制数字。例如,如果我告诉它将序列号123456存储在地址0x3C00,我的内存如下所示:

代码语言:javascript
复制
0x3C00  -  00
0x3C01  -  01
0x3C02  -  E2
0x3C03  -  40
//(123456 in Hex = 1E240)

问题是,当我的主机应用程序从设备读取序列号时,它正在查找unicode字符数组。所以我的序列号应该是...

代码语言:javascript
复制
{ '1','0',
  '2','0',
  '3','0',
  '4','0',
  '5','0',
  '6','0'}

那么,在我用C语言编写的固件中,是否可以从闪存中检索十六进制序列号,将其编码到unicode字符数组中,并将其存储在Ram中的变量中?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-03-05 04:57:36

如果序列号适合32位,并且平台是高字节顺序的,并且支持Unicode、32位整数和标准C库,那么这就非常简单了,正如其他答案所示。如果平台有32位整数和8位字符,但是小端和/或不支持Unicode,并且序列号的长度可以变化,那么下面的可能是有用的,尽管它有点老练。

代码语言:javascript
复制
void extract_serial_number(unsigned char* address, unsigned int bytes, char* buffer) {
    unsigned int value = 0;
    char c, *start = buffer;
    while (bytes--) {                      /* read the serial number into an integer */
        value = value << 8;
        value |= *address++;
    }
    while (value > 0) {                    /* convert to 16 bit Unicode (reversed) */
        *buffer++ = '0' + value % 10;
        *buffer++ = '\0';
        value /= 10;
    }
    *buffer++ = '\0';
    *buffer++ = '\0';
    buffer -= 4;
    while (buffer > start) {               /* reverse the string */
        c = *buffer;
        *buffer = *start;
        *start = c;
        buffer -= 2;
        start += 2;
    }
}
票数 2
EN

Stack Overflow用户

发布于 2010-03-05 03:30:05

看起来你想要:

代码语言:javascript
复制
wsprintf(wchar_buffer, L"%d", serial_number)

(假设您的序列号适合32位整数。在任何情况下,wsprintf都会将您的序列号打印为wchar (unicode)字符串。

票数 5
EN

Stack Overflow用户

发布于 2010-03-05 03:29:06

您应该能够使用下面这样的内容:

代码语言:javascript
复制
wchar_t buf[10];
swprintf(buf, L"%d", your_int_value);

根据C运行时库的具体实现,细节可能会有所不同。例如,您的swprintf()可能需要buf中的字符数

代码语言:javascript
复制
swprintf(buf, sizeof(buf)/sizeof(buf[0]), L"%d", your_int_value);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2382090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档