VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1139|回复: 6

16进制 转化 中文

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-12-14 10:00:02 | 显示全部楼层 |阅读模式
ASCII 转化成中文怎么办呢?
16进制转化成中文又怎么办了?
又什么解决的办法吗》?
下面是16进制数 ,
02 50 4B 31 30 32 43 42 44 41 42 34 42 41 42 42 41 41 32 30 32 30 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 42 33 46 35 33 39 33 36 42 43 42 36 32 30 32 30 32 30 32 30 32 30 32 30 39 38 33 30 32 37 30 31 33 33 33 30 34 32 30 31 33 38 38 30 33 37 30 31 33 35 38 30 33 34 30 31 33 34 38 30 33 33 30 31 32 34 33 30 33 33 30 31 30 33 39 30 33 32 30 31 32 33 33 30 33 32 30 31 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 03 2C 0D
回复

使用道具 举报

0

主题

13

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-12-14 23:45:01 | 显示全部楼层
从你给的这些16进制数看应该没有中文字在里面的.

GB2312编码里中文编码的第一位是1,也就是说应该有0x80以上的才对
回复

使用道具 举报

0

主题

16

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2020-12-15 13:30:01 | 显示全部楼层
楼上说的对,我也看不出,这些不过普通的字符
46如果是10进制是".",如果是16进制应该是"F"吧,那里是什么中文啊
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-12-15 15:15:01 | 显示全部楼层
有没有函数可以转换呢 HTTPDecode()可不可以

中的16进制是%D6D0  怎么相互转换????????、
回复

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-12-19 10:00:01 | 显示全部楼层
extern "C" __declspec(dllexport)   __int16  __stdcall   HTOA(char *H,char *A,__int16 alen)
{
        __int16 len=alen/2;
        __int16 i,j;
        char hi;
        char lo;
        j=0;
        for(i=0;i<len;i++)
        {
                hi=H[i];
                hi=(hi>>4)&0x0f;
                lo=H[i]&0x0f;
                if(hi<0x0a)A[j]=0x30+hi;
                else if(hi<=0xf)A[j]=0x37+hi;
                j++;
                if(lo<0x0a)A[j]=0x30+lo;
                else if(lo<=0xf)A[j]=0x37+lo;
                j++;
        }
        return j;
}
回复

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-12-19 11:30:01 | 显示全部楼层
上面那个反了。下面这个才正确
extern "C" __declspec(dllexport)   __int16  __stdcall   ATOH(char *A,char *H,__int16 hlen)
{
        __int16 len=2*hlen;
        __int16 alen=strlen(A);
        __int16 i,j;
        char *Au = new char[len];
        i=0;
        if(alen<len)
        {
                for(i=0;i<(len-alen);i++)
                {
                        Au[i]=0x30;
                }
        }
        for(;i<len;i++)Au[i]=A[i];
        j=0;
        for(i=0;i<len;i++)
        {
           if((Au[i]>0x2f)&&(Au[i]<0x3a))
           {
                   H[j]=Au[i]-0x30;
                   H[j]=(H[j]<<4)&0xf0;
           }
           else if((Au[i]>0x40)&&(Au[i]<0x47))
           {
                   H[j]=Au[i]-0x37;
                   H[j]=(H[j]<<4)&0xf0;
           }
           else if((Au[i]>0x60)&&(Au[i]<0x67))
           {
                   H[j]=Au[i]-0x57;
                   H[j]=(H[j]<<4)&0xf0;
           }
           else H[j]=0;
           i++;
           if((Au[i]>0x2f)&&(Au[i]<0x3a))
           {
                   H[j]+=Au[i]-0x30;
           }
           else if((Au[i]>0x40)&&(Au[i]<0x47))
           {
                   H[j]+=Au[i]-0x37;
           }
           else if((Au[i]>0x60)&&(Au[i]<0x67))
           {
                   H[j]+=Au[i]-0x57;
           }
           j++;
        }
        delete []Au;
        return j;
}

调用:
        //-----------------------------------得到姓名
        static unsigned char data[2048];
                        sTemp1 = "";
                        sName = "";
                        iTemp1 = byData[giarIDToAdd[i] + 8];
                        if(iTemp1 != 0xFF){
                                for(j=8;j<=15;j++){
                                        if(byData[giarIDToAdd[i] + j]!=32){
                                                iTemp1 = byData[giarIDToAdd[i] + j];
                                                sTemp1 += StrPas(cbf_10_16(iTemp1));
                                        }
                                }
                                ATOH(sTemp1.c_str(),data,sTemp1.Length()/2);

                                sPY = StrPas(cbf_MakeSpellCode(data,2,255));
                                sName = StrPas(data);
                        }



                        //-----------------------------------得到姓名
                        sTemp1 = "";
                        sName = " ";
            sPY = "";
            if(byData[iPos + 8] != 0xFF){
                BYTE byName[9];
                memset(byName,0,9);
                for(j=0;j<8;j++){
                    if(byData[iPos + 8 + j] != 0xFF){
                        //if(byData[iPos + 8 + j] < 0x20){
                        //    byName[j] = 0x20;
                        //}
                        //else{
                            byName[j] = byData[iPos + 8 + j];
                        //}
                    }
                }
                char *chName = (char *)byName;
                sName = static_cast<AnsiString>(chName);
                sPY = StrPas(cbf_MakeSpellCode(chName,2,255));
            }
回复

使用道具 举报

0

主题

13

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-12-20 15:30:01 | 显示全部楼层
不知道楼主要的是不是这种效果:
#include <sstream>
#include <vector>
#include <string>
using namespace std;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        stringstream inout("02 50 4B 31 30 32 43 42 44 41 42 34 42 41 42 42 41 41 32 30 32 30 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 42 33 46 35 33 39 33 36 42 43 42 36 32 30 32 30 32 30 32 30 32 30 32 30 39 38 33 30 32 37 30 31 33 33 33 30 34 32 30 31 33 38 38 30 33 37 30 31 33 35 38 30 33 34 30 31 33 34 38 30 33 33 30 31 32 34 33 30 33 33 30 31 30 33 39 30 33 32 30 31 32 33 33 30 33 32 30 31 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 03 2C 0D");
        string s;
        string result;
        char *p;
        while(inout>>s)
                result.append(1,strtol(s.c_str(),&p,16));
        Memo1->Text=result.c_str(); //ASCII字符串,一堆'F',呵呵:)
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表