/*************************************************************************
*处理内容:将FTP编码格式转化为GBK
*@param:ftpString        待转化字符串
*@return:
*@exception 
**************************************************************************/
QString FtpClient::ftpCodeToGBKCode(const QString &ftpString)
{
    QString TempResult;   
    //1.提取数据   
    size_t InStrBufSize = ftpString.size() * sizeof(QChar);   
    char* InStrBuf = (char *)malloc(InStrBufSize);   
    if (InStrBuf == NULL)       
    {   
        return TempResult;   
    }   
    memcpy(InStrBuf, ftpString.data(), InStrBufSize);   
    //2.拆分数据   
    size_t i;  
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN   
    //小端对齐下(基于Intel的x86架构)   
    //原始数据下标 0 2 4 6 8 10   
    //修复数据下标 0 1 2 3 4 5   
    i= 0;   
    for (i = 0; i < InStrBufSize; i = i + 2)      
    {   
        InStrBuf[i >> 1] = InStrBuf;       
    }   
    memset(InStrBuf + (i >> 1), 0, i >> 1);  
#else   
    //大端对齐下   
    //原始数据下标 1 3 5 7 9   
    //修复数据下标 0 1 2 3 4   
    i = 1;   
    for (i = 1; i <= InStrBufSize; i = i + 2)   
    {   
        InStrBuf[(i - 1) >> 1] = InStrBuf;   
    }   
    memset(InStrBuf + ((i - 1) >> 1), 0, (i - 1) >> 1);
#endif   
    //3.数据重新组装   
    TempResult = TempResult.fromAscii(InStrBuf);   
    free(InStrBuf);   
    return TempResult;   
}
/*************************************************************************
*处理内容:将GBK编码格式转化为FTP编码格式
*@param:gbkCode        待转化字符串
*@return:
*@exception 
**************************************************************************/
QString FtpClient::gbkCodeToFtpCode(const QString &gbkCode)
{
    QString TempResult;   
    //1.提取数据   
    size_t InStrBufSize = gbkCode.toAscii().size();   
    char* InStrBuf = (char *)malloc(InStrBufSize);//= InputStr.toAscii().data();   
    memset(InStrBuf, 0, InStrBufSize);   
    if (InStrBuf == NULL)   
    {   
        return TempResult;    
    }   
    memcpy(InStrBuf, gbkCode.toAscii().constData(), InStrBufSize);   
    //2.建立输出缓冲   
    //输出缓冲大小要比Ascii字节*2后多两个字节 用于标识输出字符串结尾  
    size_t OutStrBufSize = (InStrBufSize + 1) * sizeof(QChar);   
    quint16* OutStrBuf = (quint16 *)malloc(OutStrBufSize);   
    if (OutStrBuf == NULL)    
    {   
        return TempResult;   
    }   
    memset(OutStrBuf, 0, OutStrBufSize);   
    //3.重新编码   
    size_t i = 0;   
    for(i = 0; i < InStrBufSize; i++)   
    {   
        OutStrBuf = (quint8)InStrBuf;   
    }   
    //4.数据重新组装   
    TempResult = QString::fromUtf16(OutStrBuf);   
    free(InStrBuf);   
    free(OutStrBuf);   
    return TempResult;   
}