如何将ASCII字符串转换为十六进制?

时间:2011-03-25 01:54:10

标签: c++ visual-c++

我试图在网上找到这个主题,但我找不到我需要的那个。

我有一串字符:

char * tempBuf =“qj”;

我想要的结果是0x716A,该值将转换为十进制值。

vc ++中是否有可用于此的函数?

4 个答案:

答案 0 :(得分:3)

您可以使用字符串流将每个字符转换为十六进制表示形式。

#include <iostream>
#include <sstream>
#include <cstring>

int main()
{
    const char* tempBuf = "qj";

    std::stringstream ss;

    const char* it = tempBuf;
    const char* end = tempBuf + std::strlen(tempBuf);

    for (; it != end; ++it)
        ss << std::hex << unsigned(*it);

    unsigned result;
    ss >> result;

    std::cout << "Hex value: " << std::hex << result << std::endl;
    std::cout << "Decimal value: " << std::dec << result << std::endl;
}

答案 1 :(得分:1)

所以,如果我理解正确的想法......

  #include <stdint.h>

  uint32_t charToUInt32(const char* src) {
    uint32_t ret = 0;
    char* dst = (char*)&ret;
    for(int i = 0; (i < 4) && (*src); ++i, ++src)
      dst[i] = *src;

    return ret;
  }

答案 2 :(得分:0)

如果我理解你想要的东西:只需循环遍历角色,从头到尾;在每个字符处,将到目前为止的乘以256,并添加下一个字符的值;一次性给出十进制值。

答案 3 :(得分:0)

您正在寻找的是“十六进制编码”。有很多库可以做到这一点(除非您正在寻找的是如何自己实现)。

一个例子是crypto++