vb关于ascii码转换成6进制的问题.docx

上传人:b****6 文档编号:7233533 上传时间:2023-01-22 格式:DOCX 页数:12 大小:20.62KB
下载 相关 举报
vb关于ascii码转换成6进制的问题.docx_第1页
第1页 / 共12页
vb关于ascii码转换成6进制的问题.docx_第2页
第2页 / 共12页
vb关于ascii码转换成6进制的问题.docx_第3页
第3页 / 共12页
vb关于ascii码转换成6进制的问题.docx_第4页
第4页 / 共12页
vb关于ascii码转换成6进制的问题.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

vb关于ascii码转换成6进制的问题.docx

《vb关于ascii码转换成6进制的问题.docx》由会员分享,可在线阅读,更多相关《vb关于ascii码转换成6进制的问题.docx(12页珍藏版)》请在冰豆网上搜索。

vb关于ascii码转换成6进制的问题.docx

vb关于ascii码转换成6进制的问题

VB关于ASCII码转换成16进制的问题

悬赏分:

5-解决时间:

2008-10-2116:

01

有这样一团代码:

他能实现字符串转换成ASCII码16进制

但是我想让他实现ASCII码16进制转换成字符串谢谢各位大哥希望能有代码并且给出比较详细的说明我会追加积分的麻烦了!

~~

PrivateSubCommand1_Click()

DimA$,i%,B$

A=Text1.Text

Fori=1ToLen(A)

B=B&Hex(Asc(Mid(A,i,1)))

Next

Text2.Text=B

EndSub

建立两个文本框一个按钮

PrivateSubCommand1_Click()

DimA1%,B1$,i%,p%'定义变量

A1=Text1.Text'将输入的ASCII码赋值给A1

Fori=Len(A1)To1Step-1'循环

B1=Mid(UCase(A1),i,1)'取各位数字为了方便转为大写

p=Len(A1)-i'位权

SelectCaseB1'将16进制转为10进制

Case"A"

C=C+16^p*10

Case"B"

C=C+16^p*11

Case"C"

C=C+16^p*12

Case"D"

C=C+16^p*13

Case"E"

C=C+16^p*14

Case"F"

C=C+16^p*15

CaseElse

C=C+16^p*Val(B1)

EndSelect

Next

Text2.Text=Chr(C)'转换为字符

EndSub

以上是对你程序的修改的方法

其实完全可以很简单的

PrivateSubCommand1_Click()

DimA1%,B1$,i%,p%'定义变量

A1=Text1.Text'将输入的ASCII码赋值给A1

Text2.Text=Chr(Val("&H"&A1))'转换为字符利用数值转换

EndSub

试试效果是不是一样啊

 

求vb中将字符串转换为16进制的ascii码代码

悬赏分:

110-解决时间:

2008-2-2016:

46

ascii码为16进制形式的

字符串包含数字字母和汉字

问题补充:

得到的ascii码全部为大写、并且取值是从后往前

欢迎大家积极帮助积分定当顷囊相送

楼上的不是VB代码,不要乱贴啊

使用VB内部函数

Hex$(x)是把10进制的数字变成16进制

如y=Hex$(10)就是求10的十六进制数那么y=A

字母,数字,和汉字的asc码都只要用asc()这个函数就可以求出来了

你把问题写写清楚的话,我可以写下代码

OptionExplicit

Dimaa$,bb$,hexstr$,I&,S

PrivateSubCommand1_Click()

DimlenddAsInteger,nAsInteger

lendd=Len(Text2.Text)

Text3.Text=""

n=0

ForI=lenddTo1Step-1

n=n+1

Text3.Text=Text3.Text+Mid(Text2.Text,I,1)

Ifn=4ThenText3.Text=Text3.Text&"-":

n=0

NextI

 

EndSub

PrivateSubcommand2_Click()

aa=""

IfText1.Text=""ThenExitSub

ForI=1ToLen(Text1.Text)

aa=aa&CStr(ZFto16(Mid(Text1.Text,I,1)))

NextI

Text2.Text=Trim(aa)

Text1.Text=""

EndSub

PublicFunctionZFto16(hz$)AsString

Ifhz=""ThenExitFunction

ZFto16=Hex(Asc(hz))

EndFunction

PublicFunctionZF16toZF(hexstr$)AsString

Ifhz=""ThenExitFunction

ZF16toZF=Chr("&H"&hexstr)

EndFunction

其他回答    共2条

intchar2int(charch)

{

if(ch>='0'&&ch<='9')return(ch-'0');

if(ch>='a'&&ch<='f')return(ch-'a'+0xa);

if(ch>='A'&&ch<='F')return(ch-'A'+0xa);

return-1;

}

/*没处理非法字符,可以根据函数char2int()返回值处理*/

boolconvert(char*dst,char*src)

{

char*p=src;

char*q=dst;

intlen=strlen(src);

/*奇数长度,按右对齐方式处理*/

if(len%2)

{

*q++=char2int(*p++);

}

while(*p)

{

*q=char2int(*p++)<<4;

*q|=char2int(*p++)&0x0f;

q++;

}

returntrue;

}

看看好使不

void hex_to_ascii(unsigned char dat)

{

    unsigned char dat_buff;

  

    dat_buff = dat;

    dat = dat&0x0f;

    if((dat>=0)&&(dat<=9))

    {

       dat += 0x30;

    }

    else

       dat += 0x37;UART_TX_buff[7] = dat;

  

    dat = dat_buff;dat >>= 4;dat = dat&0x0f;

    if((dat>=0)&&(dat<=9))

    {

      dat += 0x30;

    }

    else

      dat += 0x37;UART_TX_buff[8] = dat;}

void ascii_to_hex(void)

{

    unsigned char cnt,i;

   

for(cnt=0,i=0;cnt<6;cnt++,cnt++,i++)

{

  Twi_Hex_Data[i] = Twi_ASCI_Data[cnt+1];//先放ASCII的高位(四位)

  Twi_Hex_Data[i] <<= 4;

  Twi_Hex_Data[i] += Twi_ASCI_Data[cnt];

}

}

#define Hex2Ascii(data)  (data < 10)?

 ('0' + data) :

 ('A' + data - 10)

void Byte2ASCII(unsigned char data, unsigned char *pBuf)

{

    unsigned char temp;

    temp = data & 0x0F;

    pBuf[1] = Hex2Ascii(temp);

    temp = data >> 4;

    pBuf[0] = Hex2Ascii(temp);

}这个短点

再加上两字节的:

#define Hex2Ascii(data)  (data < 10)?

 ('0' + data) :

 ('A' + data - 10)

void Byte2ASCII(unsigned char data, unsigned char *pBuf)

{

    unsigned char temp;

    

    temp = data & 0x0F;

    pBuf[1] = Hex2Ascii(temp);

    

    temp = data >> 4;

    pBuf[0] = Hex2Ascii(temp);

}

void Uint2ASCII(unsigned short data, unsigned char *pBuf)

{    unsigned char temp;

    

    temp = (unsigned char)(data & 0x000F);

    pBuf[3] = Hex2Ascii(temp);

    

    data >>= 4;

    temp = (unsigned char)(data & 0x000F);

    pBuf[2] = Hex2Ascii(temp);

    

    data >>= 4;

    temp = (unsigned char)(data & 0x000F);

    pBuf[1] = Hex2Ascii(temp);

    

    data >>= 4;

    temp = (unsigned char)(data);

    pBuf[0] = Hex2Ascii(temp);

}

#define Ascii2Hex(data)  (data >= '0' && data <= '9')?

 (data - '0') :

 ((data >= 'A' && data <= 'F')?

 (data - 'A' + 10) :

 ((data >= 'a' && data <= 'f')?

 (data - 'a' + 10) :

 0))

unsigned char ASCII2Byte(unsigned char *pBuf)

{

    unsigned char temp;

    unsigned char c;

    

    c = *pBuf++;

    temp = ((unsigned char)Ascii2Hex(c)) << 4;

    c = *pBuf;

    temp += Ascii2Hex(c);

    

    return temp;

}

unsigned short ASCII2Uint(unsigned char *pBuf)

{

    unsigned short temp;

    unsigned char c;

    

    c = *pBuf++;

    temp = ((unsigned short)Ascii2Hex(c)) << 12;

    c = *pBuf++;

    temp += ((unsigned short)Ascii2Hex(c)) << 8;

    c = *pBuf++;

    temp += ((unsigned short)Ascii2Hex(c)) << 4;    c = *pBuf;

    temp += Ascii2Hex(c);

    

    return temp;

}

DimstrAsString

DimdstAsString

str="4e"

str="&h"+str

dst=ChrW(Val(str))

OptionExplicit

PrivateSubCommand1_Click()

DimcHexAsString,SAsString,HexStrAsString

DimiAsLong

cHex="4e323830372e34303039324531323131332e3936313739"

Fori=1ToLen(cHex)Step2

S="&H"&Mid$(cHex,i,2)

HexStr=HexStr&Chr$(CLng(S))

Next

Debug.PrintHexStr

EndSub

OptionExplicit

PrivateSubCommand1_Click()

DimbyteHEX()AsByte

DimstrPAsString

DimintPAsInteger

strP=Text1.Text

intP=Len(strP)

IfintPMod2<>0ThenstrP="0"&strP'

intP=intP/2

ReDimbyteHEX(intP)

Text2.Text=""

ForintP=

 

我的函数是

PublicFunctionGbkStr(ByValssAsString)AsString

OnErrorResumeNext

DimxAsString

DimYAsVariant

DimiAsInteger

DimjAsIntegerReDimb(0To(Len(ss)/2))AsByte

j=0

   Fori=1ToLen(ss)

            

            x=Mid$(Trim(ss),i,2)

            

            Y=CLng("&H"&x)

        

            IfY<0ThenY=Y+65536

            

            

            b(j)=Y

            

            i=i+1

            j=j+1

            Nexti

            

   GbkStr=StrConv(b,vbUnicode)

EndFunction请问具体该怎么做啊?

IfY<0ThenY=Y+65536再判断一下是否是不可显示的字符(H0~H20),如果是,则转成"."

我写的能显示中文,虽然有时有乱码.因为是写的共用函数里的部分,在调用时不需要使用,所以用了条件编译.CopyMemory是API函数,声明如下:

程序代码:

PublicDeclareSubCopyMemoryLib"kernel32"Alias"RtlMoveMemory"(ByRefDestinationAsAny,ByRefSourceAsAny,ByValLengthAsLong)

程序代码:

   #IftoolsThen

   '工具显示16进制代码

   WithForm1.Text3

        DimtxjAsString

        Dimtxj2AsString

        Dimtxj3AsString

        DimtxpAsBoolean

        Dimtxj4AsInteger

        Dimtxk

(1)AsByte

        

        .Text="加密结果"&vbCrLf&"      000102030405060708090A0B0C0D0E0F"

        

        Fori=0Tooptr-1

            '.Text=.Text&vbcrlf&

            txj=Hex(pout(i))

            IfLen(txj)=1Thentxj="0"&txj

            txj2=txj2&""&txj   '这是生成16进制部分

            Ifpout(i)<128Then      '从这里开始是生成ASCII部分

               Ifpout(i)>=32Then                 '可显示字符

                    txj3=txj3&Chr(pout(i))

               Else

                    txj3=txj3&"."

               EndIf

            Else

               IfNottxpThen        '是否上一个字符输出时,取走了这个字符,否,输出中文

                    txk

(1)=pout(i)

                    txk(0)=pout(i+1)

                    CopyMemorytxj4,txk(0),2

                    txj3=txj3&Chr(txj4)

                    txp=True         '设置取走了下一个字符

               Else

                    txp=False        

               EndIf

            EndIf

            If(i+1)Mod16=0Then         '换行,按每行16个字节排列

               txj="0"&i\16

               txj=String(4-Len(txj),"0")&txj

               .Text=.Text&vbCrLf&txj&""&txj2&"  "&txj3

               txj2=""

               txj3=""

            EndIf

   

   Nexti               txj="0"&i\16            '最后一行的显示

               txj=String(4-Len(txj),"0")&txj

               .Text=.Text&vbCrLf&txj&""&txj2&Space(48-Len(txj2))&"  "&txj3

   EndWith

   '工具输出结束

   #EndIf

 

[C/C++]ASCII转HEX和HEX转ASCII算法

voidhex_to_ascii(unsignedchardat)

{

  unsignedchardat_buff;

  

  dat_buff=dat;

  dat=dat&0x0f;

  if((dat>=0)&&(dat<=9))

  {

    dat+=0x30;

  }

  else

    dat+=0x37;

      UART_TX_buff[7]=dat;

        

  dat=dat_buff;

      dat>>=4;

      dat=dat&0x0f;

  if((dat>=0)&&(dat<=9))

  {

    dat+=0x30;

  }

  else

    dat+=0x37;

      UART_TX_buff[8]=dat;

}

voidascii_to_hex(void)

{  unsignedcharcnt,i;

  

      for(cnt=0,i=0;cnt<6;cnt++,cnt++,i++)

      {

      Twi_Hex_Data=Twi_ASCI_Data[cnt+1];//先放ASCII的高位(四位)

      Twi_Hex_Data<<=4;

      Twi_Hex_Data+=Twi_ASCI_Data[cnt];

      }

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1