字符串传换成16进制数组

xingat110 2013-06-04 05:57:53
怎么吧一个字符串转换成16进制
比如吧一个“2ad5f6e5”转换成16进制保存到unsigned char hex[4]中
...全文
113 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xingat110 2013-06-05
引用 1 楼 ccrun 的回复:
char sz[] = "2ad5f6e5";
unsigned char hex[4];

size_t len = strlen(sz);

size_t j = 0;
BYTE c;
for (size_t i = 0; i < len; i += 2)
{
    c = sz[i];
    if (c >= '0' && c <= '9') hex[j] = (c - '0') << 4;
    else if (c >= 'a' && c <= 'f') hex[j] = (c - 'a' + 10) << 4;

    c = sz[i + 1];
    if (c >= '0' && c <= '9') hex[j++] |= (c - '0');
    else if (c >= 'a' && c <= 'f') hex[j++] |= (c - 'a' + 10);
}
懂了,3Q!
回复
缘中人 2013-06-05
转16 2 还都不一样,这几天咋这么多
回复
ccrun.com 2013-06-04
char sz[] = "2ad5f6e5";
unsigned char hex[4];

size_t len = strlen(sz);

size_t j = 0;
BYTE c;
for (size_t i = 0; i < len; i += 2)
{
    c = sz[i];
    if (c >= '0' && c <= '9') hex[j] = (c - '0') << 4;
    else if (c >= 'a' && c <= 'f') hex[j] = (c - 'a' + 10) << 4;

    c = sz[i + 1];
    if (c >= '0' && c <= '9') hex[j++] |= (c - '0');
    else if (c >= 'a' && c <= 'f') hex[j++] |= (c - 'a' + 10);
}
回复
相关推荐
发帖
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2013-06-04 05:57
社区公告
暂无公告