字符串传换成16进制数组

xingat110 2013-06-04 05:57:53
怎么吧一个字符串转换成16进制
比如吧一个“2ad5f6e5”转换成16进制保存到unsigned char hex[4]中
...全文
174 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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);
}

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧