代码拉取完成,页面将自动刷新
同步操作将从 jiangxiaogang/SerialTool 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "stdafx.h"
#include "convert.h"
//十六进制转数据,返回数据长度
//示意:"12 34" -> 0x12 0x34
DWORD HEXToBIN(CHAR* pHEX, BYTE* pBIN)
{
DWORD dwLen;
CHAR ch;
BYTE biFlag;
BYTE biHalfByte;
biFlag = 0;
biHalfByte = 0;
for(dwLen=0;ch=*pHEX;pHEX++)
{
if ((ch>='0')&&(ch<='9'))
{
biHalfByte = ch - '0';
}
else if((ch>='A')&&(ch<='F'))
{
biHalfByte = ch - 'A' + 10;
}
else if((ch>='a')&&(ch<='f'))
{
biHalfByte = ch - 'a' + 10;
}
else
{
continue;
}
if(biFlag==0)
{
*pBIN = biHalfByte<<4;
}
else
{
*pBIN |= biHalfByte;
pBIN++;
dwLen++;
}
biFlag = !biFlag;
}
return dwLen;
}
//二进制转换为十六进制
//示意:0x12 0x34 -> "12 34"
static CONST CHAR chCode[]={"0123456789ABCDEF"};
void BINToHEX(CHAR* pzHEX, BYTE* pBIN, DWORD dwLen)
{
DWORD i;
for(i=0; i<dwLen; i++)
{
*pzHEX++ = chCode[(*pBIN>>4)&0x0F];
*pzHEX++ = chCode[(*pBIN)&0x0F];
*pzHEX++ = ' ';
pBIN++;
}
*pzHEX = 0;
}
//解决半个汉字的问题
void BINToGBK(CHAR* pzGBK, BYTE* pBIN, DWORD dwLen)
{
static BOOL bHalf;
static CHAR cLast;
DWORD i;
if(bHalf)
{
*pzGBK++ = cLast;
bHalf = FALSE;
}
for(i=0;i<dwLen;i++)
{
if(bHalf)
{
bHalf = FALSE;
}
else if(*pBIN > 0x80)
{
bHalf = TRUE;
}
if((*pBIN == '\n') && (cLast != '\r'))
{
*pzGBK++ = '\r';
}
cLast = *pBIN;
*pzGBK++ = *pBIN++;
}
if(bHalf)
{
pzGBK--;
}
*pzGBK = 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。