21xrx.com
2024-12-22 20:01:48 Sunday
登录
文章检索 我的文章 写文章
C++字符串转16进制:实现方法及示例
2023-07-14 00:41:07 深夜i     --     --
C++ 字符串 转16进制 实现方法 示例

C++是一种十分常用的编程语言,它不仅支持各种数据类型的转换,还可以进行字符串转16进制的操作。这种转换可以将普通的字符串转换成16进制的字符串,以达到更加复杂和安全的数据传输效果。在这篇文章中,我们将分享如何在C++中实现字符串转16进制以及一些示例。

实现方法

我们可以使用C++标准库中的stringstream和iomanip库实现字符串转16进制。stringstream库是一个将字符串映射到流的库,而iomanip库则可用于格式化输出。

下面是一个示例代码:


#include <iostream>

#include <sstream>

#include <iomanip>

using namespace std;

string stringToHex(string input) {

  stringstream sstream;

  sstream << hex << setfill('0');

  // 将每个字符转换为16进制

  for (size_t i = 0; input.length() > i; ++i)

    sstream << setw(2) << static_cast<unsigned int>(input[i]);

  return sstream.str();

}

在上述代码中,我们首先使用stringstream定义了一个流对象sstream,并使用了hex标志,确保输出为16进制。接着,我们对输入字符串进行遍历并将每个字符转换为16进制。最后,我们返回结果字符串。

示例1

首先,我们来看一个最简单的例子,将一个字符串转换成16进制字符串:


string input = "Hello World!";

string output = stringToHex(input);

cout << output << endl;

在这个例子中,我们将字符串"Hello World!"转换为16进制字符串,并输出结果:


48656c6c6f20576f726c6421

示例2

我们还可以将输入的十六进制字符串转换成普通字符串。下面是一个示例代码:


#include <iostream>

#include <sstream>

#include <iomanip>

using namespace std;

string hexToString(string input) {

  stringstream sstream(input);

  sstream >> hex;

  string output;

  unsigned char c;

  while (sstream >> c)

    output += c;

  return output;

}

在上述代码中,我们使用输入字符串初始化了一个stringstream,然后使用hex标志确保从字符串中读取的值为16进制格式。接着,我们遍历字符串并将每个字符转换为相应的ASCII字符。最后,我们返回结果字符串。

接下来,我们来看一个将16进制字符串转换为普通字符串的例子:


string input = "48656c6c6f20576f726c6421";

string output = hexToString(input);

cout << output << endl;

在这个例子中,我们将输入的16进制字符串转换成普通字符串"Hello World!",并输出结果:


Hello World!

C++中字符串转16进制是一个非常简单的操作,只需要使用一些标准库中的函数和指令即可完成。但是需要注意的是,这种转换只适用于ASCII字符集。如果要处理其他字符集,需要使用一些其他的技术和工具进行编码。

  
  

评论区

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