1.输入汉字,输出内码
2.输入内码,输出汉字简体和繁体会有什么不同?

解决方案 »

  1.   

    你找个码表,做个hashtable对应一下不就行了gbk就包含了gb2312和big5吧!很简的
      

  2.   

    汉字->内码
    char a[100], b[200], buf[3];
    unsigned char c[100];
    int i, len; memset(a, 0, 100);
    memset(b, 0, 200); sprintf(a, "你好"); memcpy(c, a, 100); len = strlen(a); for (i=0; i<len; i++)
    {
    memset(buf, 0, 3);
    sprintf(buf, "%02x", c[i]);
    strcat(b, buf);
    }
      

  3.   

    内码->汉字
    写了个函数:
    BOOL HextoAscii(char* sHex,char* sReply)
    {
    int iLen,i,j=0;
    BYTE * lsData;
    BYTE * lsReply; if(sHex==NULL)
    {
    return FALSE;
    }
    iLen=strlen(sHex);
    if((iLen%2!=0)||(iLen>1024))
    {
    return FALSE;
    }
    if(sReply==NULL)
    {
    return FALSE;
    } iLen=strlen(sHex);
    lsData=new BYTE[iLen];
    lsReply=new BYTE[iLen/2+1];
    memcpy(lsData,sHex,iLen);
    for(i=0;i<iLen;i+=2)
    {
    if(((lsData[i]>='0'&&lsData[i]<='9')||
    (lsData[i]>='a'&&lsData[i]<='f')||
    (lsData[i]>='A'&&lsData[i]<='F'))&&
    ((lsData[i+1]>='0'&&lsData[i+1]<='9')||
    (lsData[i+1]>='a'&&lsData[i+1]<='f')||
    (lsData[i+1]>='A'&&lsData[i+1]<='F'))
    )
    {
    if(lsData[i]>='0'&&lsData[i]<='9')
    lsReply[j] = lsData[i]-'0';
    if(lsData[i]>='a'&&lsData[i]<='f')
    lsReply[j] = lsData[i]-'a'+10;
    if(lsData[i]>='A'&&lsData[i]<='F')
    lsReply[j] = lsData[i]-'A'+10;
    lsReply[j]=(lsReply[j]<<4)&0xf0;
    if(lsData[i+1]>='0'&&lsData[i+1]<='9')
    lsReply[j] |= lsData[i+1]-'0';
    if(lsData[i+1]>='a'&&lsData[i+1]<='f')
    lsReply[j] |= lsData[i+1]-'a'+10;
    if(lsData[i+1]>='A'&&lsData[i+1]<='F')
    lsReply[j] |= lsData[i+1]-'A'+10;
    j++;
    }
    else
    break;
    }
    lsReply[j]=0x00;
    memcpy(sReply,lsReply,j+1);
    delete lsReply;
    delete lsData;
    return TRUE;
    }整个测试流程char a[100], b[200], buf[3];
    unsigned char c[100];
    int i, len; memset(a, 0, 100);
    memset(b, 0, 200); sprintf(a, "你好"); memcpy(c, a, 100); len = strlen(a); for (i=0; i<len; i++)
    {
    memset(buf, 0, 3);
    sprintf(buf, "%02x", c[i]);
    strcat(b, buf);
    } memset(a, 0, 100); HextoAscii(b, a);在上班休息的时候写了,乱了点,你单比调试a和b内容变化就知道怎么回事了。调优的工作你自己做吧。功能是实现了。
      

  4.   

    我写的一个汉字转化为内码的函数,直接在win32 console控制台下就可以运行的汉字的内码需要看GB2312表。注意高低字节都要加A0,才是真正的内码。void main()
    {
    WORD s='啊';
    BYTE loValue = LOBYTE(s);///取低8位
        BYTE hiValue = HIBYTE(s);///取高8位
    int a=static_cast<int>(hiValue);
    int b=static_cast<int> (loValue);
    cout<<a<<endl;
    cout<<b<<endl;
    }