16,472
社区成员
发帖
与我相关
我的任务
分享
#include <bitset>
#include <iostream>
using namespace std;
TCHAR Str[] = L"abcdef";
LONG x = 0;
CHAR szBin[33] = { 0 };
_stscanf_s(Str, _T("%x"), &x);
bitset<32> b(x);
b.to_string()._Copy_s(szBin, _countof(szBin), b.size());
int HexStr2BinStr(LPCTSTR szHexStr, CString &szBinStr)
{
int iMaxSrcLen = _tcslen(szHexStr);
for(int i=0; i<iMaxSrcLen; i++)
{
TCHAR szSrc[] = {szHexStr[i], 0}; //截取数据
UINT uData = _tcstoul(szSrc, NULL, 16); //16进制ASC转为原始数据
TCHAR szDst[16] ={0};
_ultot_s(uData, szDst, 2); //数据转换为2进制
szBinStr += szDst;
}
return szBinStr.GetLength();
}
{
CString szBinStr;
HexStr2BinStr(_T("ABCD"), szBinStr);
}
void Hex2Bin(TCHAR* Hex,TCHAR* Buf)
{
TCHAR *px=Buf;
TCHAR c;
int idx;
TCHAR* Bin[]={ _T("0000"),_T("0001"),_T("0010"),_T("0011"),
_T("0100"),_T("0101"),_T("0110"),_T("0111"),
_T("1000"),_T("1001"),_T("1010"),_T("1011"),
_T("1100"),_T("1101"),_T("1110"),_T("1111"),
};
for (int i=0;i<_tcslen(Hex);i++)
{
c=Hex[i];
if(c>='0'&&c<='9')
idx=c-'0';
else if(c>='a'&&c<='f')
idx=c-'a'+10;
else if (c>='A'&&c<='F')
{
idx=c-'A'+10;
}
memcpy(px,Bin[idx],sizeof(TCHAR)*5);
px+=4;
}
}
void Hex2Bin(CString Hex,TCHAR* Buf)
{
TCHAR *px=Buf;
TCHAR c;
int idx;
CString[] Bin[]={ _T("0000"),_T("0001"),_T("0010"),_T("0011"),
_T("0100"),_T("0101"),_T("0110"),_T("0111"),
_T("1000"),_T("1001"),_T("1010"),_T("1011"),
_T("1100"),_T("1101"),_T("1110"),_T("1111"),
};
for (int i=0;i<Hex.GetLength();i++)
{
c=Hex[i];
if(c>'0'&&c<='9')
idx=c-'0';
else if(c>='a'&&c<='f')
idx=c-'a'+10;
else if (c>='A'&&c<='F')
{
idx=c-'A'+10;
}
memcpy(px,Bin[idx],sizeof(TCHAR)*4);
px+=4;
}
}