Как преобразовать строку ASCII в шестнадцатеричное? - PullRequest
0 голосов
/ 25 марта 2011

Я пытался найти эту тему в Интернете, но не смог найти ту, которая мне нужна.

У меня есть строка символов:

char * tempBuf = "qj";

Я хочу получить результат 0x716A, и это значение будет преобразовано в десятичное значение.

Есть ли в vc ++ какая-либо функция, которая может быть использована для этого?

Ответы [ 4 ]

3 голосов
/ 25 марта 2011

Вы можете использовать поток строк для преобразования каждого символа в шестнадцатеричное представление.

#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 голос
/ 25 марта 2011

Так что, если я правильно понял идею ...

  #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;
  }
0 голосов
/ 25 марта 2011

То, что вы ищете, называется "шестнадцатеричное кодирование". Существует множество библиотек, которые могут это сделать (если только вы не искали, как реализовать ее самостоятельно).

Один из примеров - crypto ++ .

0 голосов
/ 25 марта 2011

Если я правильно понимаю, что вы хотите: просто переберите символы, начните до конца;в каждом символе умножьте сумму до 256 и добавьте значение следующего символа;это дает десятичное значение в одном кадре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...