一、字節(jié)轉(zhuǎn)16進(jìn)制字符串
std::string bytestohexstring(char* bytes,int bytelength) {
string str("");
string str2("0123456789abcdef");
for (int i = 0; i < bytelength; i++) {
int b;
b = 0x0f & (bytes[i] >> 4);
str.append(1, str2.at(b));
b = 0x0f & bytes[i];
str.append(1, str2.at(b));
}
return str;
}
二、16進(jìn)制字符串轉(zhuǎn)2進(jìn)制字符串?
方法1:?
string getBinStr(string hexStr) {
long long val = strtoll(hexStr.c_str(), NULL, 16);
string binStr = "";
while (val > 0) {
int remainder = val % 2;
binStr.insert(binStr.begin(), '0' + remainder);
val /= 2;
}
//不足長度的補(bǔ)0
if (binStr.length() < 32) { //這里的32為你實際要輸出的2進(jìn)制字符串的長度
string temp = "";
for (int i = 0; i < 32 - binStr.length(); i++) {
temp.append("0");
}
binStr = temp.append(binStr);
}
return binStr;
}
方法2:?文章來源:http://www.zghlxwxcb.cn/news/detail-808195.html
//性能略優(yōu)于方法1
string getBinStr(string hexStr) {
long long val = strtoll(hexStr.c_str(), NULL, 16);
char binary[32];
for (int i = 31; i >= 0; i--)
{
binary[31 - i] = '0' + ((val >> i) & 1);
}
string binStr(binary);
return binStr;
}
方法3:文章來源地址http://www.zghlxwxcb.cn/news/detail-808195.html
#include <bitset>
//無法處理大于32位的數(shù)值。 性能與方法2差不多
string getBinStr(string hexStr) {
long val = stol(hexStr.c_str(), NULL, 16);
bitset<32> binaryNum(val);
return binaryNum.to_string();
}
到了這里,關(guān)于C++篇——在linux下將字節(jié)轉(zhuǎn)16進(jìn)制字符串, 16進(jìn)制字符串轉(zhuǎn)2進(jìn)制字符串的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!