21xrx.com
2024-09-20 00:37:32 Friday
登录
文章检索 我的文章 写文章
C++字符串转16进制数字的实现方法
2023-07-05 02:52:45 深夜i     --     --
C++ 字符串 转换 16进制 数字

C++是一种广泛使用的编程语言,它支持字符串和16进制数字的相互转换,可以通过以下方法实现:

1. 将字符串转换为字符数组(char array)

2. 循环遍历该字符数组,将每个字符转换为相应的16进制数字,并依次存储到一个数组或变量中

3. 结合位运算和数学运算,将每个16进制数字组合成一个完整的16进制数

下面是一个示例代码:


#include <iostream>

#include <cstring>

#include <cstdio>

using namespace std;

int hextodec(char c) {

  if (c >= '0' && c <= '9') return c - '0';

  else if (c >= 'A' && c <= 'F') return 10 + c - 'A';

  else if (c >= 'a' && c <= 'f') return 10 + c - 'a';

  else return -1;

}

int main() {

  string str = "Hello World!";

  cout << "String: " << str << endl;

  int len = str.length();

  unsigned char buf[16];

  memset(buf, 0, 16);

  for (int i = 0; i < len; i++) {

    int x = hextodec(str[i]);

    if (x != -1) {

      if (i % 2 == 0) buf[i / 2] = x << 4;

      else buf[i / 2] |

      if (i % 2 == 0) buf[i / 2] = x << 4;

      else buf[i / 2] |= x;

    

  }

  printf("Hexadecimal: ");

  for (int i = 0; i < len / 2 + len % 2; i++) {

    printf("%02X ", buf[i]);

  }

  cout << endl;

  return 0;

}

此代码将字符串“Hello World!”转换为16进制数字,并输出相应的结果。

在此示例中,我们使用一个名为“hextodec”的函数来将每个字符转换为相应的16进制数字。根据字符的ASCII码值,该函数返回正确的转换结果。我们使用一个名为“buf”的unsigned char数组来存储转换后的16进制数据,并根据需要使用“printf”函数来输出相应的结果。

需要注意的是,此代码仅适用于字符串长度为偶数的情况。如果字符串长度为奇数,最后一个字符将被忽略。如果您需要支持长度为奇数的字符串,可以根据需要进行调整。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复