GBK("GB2312")编码时,一个汉字对应两个字节,UFT8("utf-8")编码时,一个汉字对应3个字节
UFT8编码时:
QString str = "中";
QTextCodec *code = QTextCodec::codecForName("utf-8");//UFT8编码
QByteArray ba = code->fromUnicode(str);
for(int i=0;i
unsigned char temp;
temp=ba.at(i);
qDebug()$amp; }
打印出“中”的三个编码为:
ba.at(i)= 228
ba.at(i)= 184
ba.at(i)= 173
228 转换为二进制:11100100
184 转换为二进制:10111000
173 转换为二进制:10101101
原型:
int WINAPI icePub_fileHexToHexString(char *strBinFilename,char *strHexStringFilename,int flag)
输入:strBinFilename 待处理文件名
strHexStringFilename 生成hex串文件名
flag 格式标志,0无格式;>0每字节空格分隔,并且每处理flag个数据就换行
输出:
VC sample代码:
typedef int (WINAPI ICEPUB_FILEHEXTOHEXSTRING)(char *strBinFilename,char *strHexStringFilename,int flag);
ICEPUB_FILEHEXTOHEXSTRING *icePub_fileHexToHexString = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_fileHexToHexString=(ICEPUB_FILEHEXTOHEXSTRING *)GetProcAddress(hDLLDrv,"icePub_fileHexToHexString");
}
if(icePub_fileHexToHexString)
{
icePub_fileHexToHexString("a.exe","a.txt",16);
}
if(hDLLDrv)
FreeLibrary(hDLLDrv);
VB sample 代码:
Private Declare Function icePub_fileHexToHexString Lib "icePubDll.dll" (ByVal strBinFilename As String,ByVal strHexStringFilename As String,ByVal flag As Integer) As Integer
Dim a2 As Integer
a2=icePub_fileHexToHexString("a.exe","a.txt",16)
原型:
void WINAPI icePub_BCDHexToHexString(BYTE *hexBuffer,BYTE *strHexString,int hexBufferLen)
输入:hexBuffer hex数据
hexBufferLen hexBuffer的长度
输出:strHexString 展开后hex文本串
返回码:
VC sample代码:
extern "C"
{
__declspec(dllexport)
void WINAPI icePub_BCDHexToHexString(BYTE *hexBuffer,BYTE *strHexString,int hexBufferLen);
}
#pragma comment(lib,"icePubDll.lib")
char str1[128];
icePub_BCDHexToHexString("月光",str1,8);
AfxMessageBox(str1);
VB sample 代码:
Private Declare Function icePub_BCDHexToHexString Lib "icePubDll.dll" (ByVal hexBuffer As String,ByVal strHexString As String,ByVal hexBufferLen As Integer) As Integer
Dim str1 As String
Dim a2 As Integer
str1=Space(1024*30)
a2=icePub_BCDHexToHexString("月光",str1,8)
MsgBox str1