C++十六进制字符串与数组互转

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiongya8888/article/details/84949238
#include <cstdio>
#include <string>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <vector>


std::string binToHex(const unsigned char *data,size_t size)
{
	std::ostringstream strHex;
	strHex << std::hex << std::setfill('0');
	for (size_t i = 0; i < size; ++i) {
		strHex << std::setw(2)<<static_cast<unsigned int>(data[i]);
	}
	return strHex.str();
}
 
std::vector<unsigned char> hexToBin(const std::string &hex)
{
	std::vector<unsigned char> dest;
	auto len = hex.size();
	dest.reserve(len / 2);
	for (decltype(len) i = 0; i < len; i += 2)
	{
		unsigned int element;
		std::istringstream strHex(hex.substr(i, 2));
		strHex >> std::hex >> element;
		dest.push_back(static_cast<unsigned char>(element));
	}
	return dest;
}

int main(void)
{
	const char *strTest = "CED2CAC7B8F6B4F3D0DCC3A8";
	auto charVec = hexToBin(strTest);
	for (auto element : charVec) {
		std::cout << element;
	}
	std::cout << std::endl;
	auto strHex = binToHex(charVec.data(), charVec.size());
	std::cout << strHex << std::endl;
	system("pause");
	return 0;
}


猜你喜欢

转载自blog.csdn.net/xiongya8888/article/details/84949238