0
点赞
收藏
分享

微信扫一扫

十六进制文件数据转十进制重新存储

场景

     十六进制数据直接保存到文件:

55 aa 02 01 a0 01 06 fc 55 aa 03 bc a3 01 16 01  

   如何转换成十进制重新保存


代码

int ChangeHEXToDEC(char cByte)
{
int nNumber = 0;
switch (cByte)
{
case '0':
{
nNumber = 0;
break;
}
case '1':
{
nNumber = 1;
break;
}
case '2':
{
nNumber = 2;
break;
}
case '3':
{
nNumber = 3;
break;
}
case '4':
{
nNumber = 4;
break;
}
case '5':
{
nNumber = 5;
break;
}
case '6':
{
nNumber = 6;
break;
}
case '7':
{
nNumber = 7;
break;
}
case '8':
{
nNumber = 8;
break;
}
case '9':
{
nNumber = 9;
break;
}
case 'A':
case 'a':
{
nNumber = 10;
break;
}
case 'B':
case 'b':
{
nNumber = 11;
break;
}
case 'C':
case 'c':
{
nNumber = 12;
break;
}
case 'D':
case 'd':
{
nNumber = 13;
break;
}
case 'E':
case 'e':
{
nNumber = 14;
break;
}
case 'F':
case 'f':
{
nNumber = 15;
break;
}
default:
{
nNumber = 0;
break;
}
}
return nNumber;
}

int nFirstNumber = ChangeHEXToDEC(pFileBuf[0]);
int nSecondNumber = ChangeHEXToDEC(pFileBuf[1]);
char cRealByte = nFirstNumber * 16 + nSecondNumber;

void TestRecvVideoData()
{
std::ifstream fileHandle("E:/my.rtp", std::ifstream::in | std::ifstream::binary);
fileHandle.seekg(0, std::ios::end);
int nFileLen = fileHandle.tellg();
fileHandle.seekg(0, std::ios::beg);

int nLen = nFileLen;
std::string strFileBuffer;
int i = 0;
while (nLen > 2)
{
char* pFileBuf = new char[20];
memset(pFileBuf, 0x0, 20);
fileHandle.read(pFileBuf, 3);

int nFirstNumber = ChangeHEXToDEC(pFileBuf[0]);
int nSecondNumber = ChangeHEXToDEC(pFileBuf[1]);
char cRealByte = nFirstNumber * 16 + nSecondNumber;
strFileBuffer.append(&cRealByte, 1);
nLen = nLen - 2;
i = i + 2;
}
}


举报

相关推荐

0 条评论