当前位置:首页 >> 信息与通信 >>

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


VB 关于 ASCII 码转换成 16 进制的问题
悬赏分:5 - 解决时间:2008-10-21 16:01

有这样一团代码:他能实现字符串转换成 ASCII 码 16 进制 但是我想让他实现 ASCII 码 16 进制转换成字符串 谢谢各位大哥 希望能有代码 并且给出 比较详细的说明 我会追加积分的 麻烦了!~~ Private Sub Command1_Click() Dim A$, i%, B$ A = Text1.Text For i = 1 To Len(A) B = B & Hex(Asc(Mid(A, i, 1))) Next Text2.Text = B End Sub

建立两个文本框 一个按钮 Private Sub Command1_Click() Dim A1%, B1$, i%, p% '定义变量 A1 = Text1.Text '将输入的 ASCII 码赋值给 A1 For i = Len(A1) To 1 Step -1 '循环 B1 = Mid(UCase(A1), i, 1) '取各位数字 为了方便转为大写 p = Len(A1) - i '位权 Select Case B1 '将 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 Case Else C = C + 16 ^ p * Val(B1) End Select Next Text2.Text = Chr(C) '转换为字符 End Sub

以上是对你程序的修改的方法 其实完全可以很简单的 Private Sub Command1_Click() Dim A1%, B1$, i%, p% '定义变量 A1 = Text1.Text End Sub '将输入的 ASCII 码赋值给 A1 Text2.Text = Chr(Val("&H" & A1)) '转换为字符 利用数值转换

试试效果是不是一样啊

求 vb 中将字符串转换为 16 进制的 ascii 码代码
悬赏分:110 - 解决时间:2008-2-20 16:46

ascii 码为 16 进制形式的 字符串包含数字字母和汉字 问题补充: 问题补充: 得到的 ascii 码全部为大写、并且取值是从后往前 欢迎大家积极帮助积分定当顷囊相送 楼上的不是 VB 代码,不要乱贴啊 使用 VB 内部函数 Hex$(x) 是把 10 进制的数字变成 16 进制 如 y=Hex$(10)就是求 10 的十六进制数 那么 y=A 字母,数字,和汉字的 asc 码都只要用 asc()这个函数就可以求出来了 你把问题写写清楚的话,我可以写下代码 Option Explicit Dim aa$, bb$, hexstr$, I&, S Private Sub Command1_Click() Dim lendd As Integer, n As Integer lendd = Len(Text2.Text) Text3.Text = "" n=0 For I = lendd To 1 Step -1 n=n+1 Text3.Text = Text3.Text + Mid(Text2.Text, I, 1) If n = 4 Then Text3.Text = Text3.Text & "-": n = 0

Next I

End Sub Private Sub command2_Click() aa = "" If Text1.Text = "" Then Exit Sub For I = 1 To Len(Text1.Text) aa = aa & CStr(ZFto16(Mid(Text1.Text, I, 1))) Next I Text2.Text = Trim(aa) Text1.Text = "" End Sub Public Function ZFto16(hz$) As String If hz = "" Then Exit Function ZFto16 = Hex(Asc(hz)) End Function Public Function ZF16toZF(hexstr$) As String If hz = "" Then Exit Function ZF16toZF = Chr("&H" & hexstr)

End Function
其他回答 { 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()返回值处理*/ bool convert(char *dst, char *src) { char *p=src; char *q=dst; int len = strlen(src);
共 2 条

int char2int(char ch)

/*奇数长度,按右对齐方式处理*/ if(len%2) { *q++ = char2int(*p++); } while(*p) { *q = char2int(*p++) << 4; *q |= char2int(*p++) & 0x0f; q++; } return true; } 看看好使不

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')? (da ta - '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; }

Dim str As String Dim dst As String str = "4e" str = "&h" + str dst = ChrW(Val(str)) Option Explicit Private Sub Command1_Click() Dim cHex As String, S As String, HexStr As String Dim i As Long cHex = "4e323830372e34303039324531323131332e3936313739" For i = 1 To Len(cHex) Step 2 S = "&H" & Mid$(cHex, i, 2) HexStr = HexStr & Chr$(CLng(S)) Next Debug.Print HexStr End Sub Option Explicit Private Sub Command1_Click() Dim byteHEX() As Byte Dim strP As String Dim intP As Integer strP = Text1.Text intP = Len(strP) If intP Mod 2 <> 0 Then strP = "0" & strP intP = intP / 2 ReDim byteHEX(intP) Text2.Text = "" For intP =

'

我的函数是 Public Function GbkStr(ByVal ss As String) As String On Error Resume Next Dim x As String Dim Y As Variant Dim i As Integer Dim j As Integer ReDim b(0 To (Len(ss) / 2)) As Byte

j=0

For i = 1 To Len(ss)

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

Y = CLng("&H" & x)

If Y < 0 Then Y = Y + 65536

b(j) = Y

i=i+1 j=j+1 Next i

GbkStr = StrConv(b, vbUnicode) End Function

请问具体该怎么做啊???

If Y < 0 Then Y = Y + 65536 再判断一下是否是不可显示的字符(H0~H20) ,如果是,则转成"." 我写的能显示中文,虽然有时有乱码. 因为是写的共用函数里的部分,在调用时不需要使用,所以用了条件编译. CopyMemory 是 API 函数,声明如下: 程序代码: 程序代码: Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef Destination As Any, B yRef Source As Any, ByVal Length As Long)

程序代码: 程序代码:

#If tools Then '工具显示 16 进制代码 With Form1.Text3 Dim txj As String Dim txj2 As String Dim txj3 As String Dim txp As Boolean Dim txj4 As Integer Dim txk(1) As Byte

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

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F"

For i = 0 To optr - 1 '.Text =.Text & vbcrlf & txj = Hex(pout(i)) If Len(txj) = 1 Then txj = "0" & txj txj2 = txj2 & " " & txj If pout(i) < 128 Then If pout(i) >= 32 Then txj3 = txj3 & Chr(pout(i)) Else txj3 = txj3 & "." End If Else If Not txp Then txk(1) = pout(i) txk(0) = pout(i + 1) CopyMemory txj4, txk(0), 2 txj3 = txj3 & Chr(txj4) txp = True Else txp = False End If End If If (i + 1) Mod 16 = 0 Then txj = "0" & i \ 16 txj = String(4 - Len(txj), "0") & txj .Text = .Text & vbCrLf & txj & " " & txj2 & " " & txj3 txj2 = "" txj3 = "" End If '换行,按每行 16 个字节排列 '设置取走了下一个字符 '是否上一个字符输出时,取走了这个字符,否,输出中文 '这是生成 16 进制部分 '从这里开始是生成 ASCII 部分 '可显示字符

Next i

txj = "0" & i \ 16

'最后一行的显示

txj = String(4 - Len(txj), "0") & txj .Text = .Text & vbCrLf & txj & " " & txj2 & Space(48 - Len(txj2)) & " " & txj3 End With '工具输出结束 #End If

[C/C++] ASCII 转 HEX 和 HEX 转 ASCII 算法
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 = Twi_ASCI_Data[cnt+1];//先放 ASCII 的高位(四位)

Twi_Hex_Data <<= 4; Twi_Hex_Data += Twi_ASCI_Data[cnt]; } }


相关文章:
VB中ASCII码的一些应用
VBASCII码的一些应用_IT/计算机_专业资料。简单...16 17 18 19 20 21 22 23 24 代码 字符 代码...254 ? 8、9、10 和 13 可以分别转换为退格符、...
ASCII键码VB中的键码常数
ASCII键码VB中的键码常数_IT/计算机_专业资料。ASCII键码VB中的键码常数ASCII...ASCII码转换成16进制程序... 2页 1下载券 VB高级编程100例 88页 1下载券 ...
vb常见问题汇总
运行后,如果没有问题可以保存能 够脱离 vb 环境...在更改名字的时候必须一个一个改。不会自动更改。 ...26 大小写字母的 ASCII 码? 大写 A-Z 是 65-...
VB常见问题及解决
VB常见问题及解决_军事/政治_人文社科_专业资料。...程序码: Private Sub Text1_KeyPress(KeyAscii As ...(16改成 win31 API) Declare Function ...
VB中常用函数及有用的KeyAscii键码
VB中常用函数及有用的KeyAscii键码_电脑基础知识_...补充说明 VAL()就是函数用于将数值字符串转换为数值...精确到 15 或 16 位十进制数,即 15 或 16 位...
VB的KeyAscii码键位大全
VB的KeyAscii码键位大全_IT/计算机_专业资料。VB的KeyAscii码键位大全,2012年整理,需要的同学可以查询 VB 的 KeyAscii 码大全 16 进制 vbKeyLButton 0x1 鼠标左...
关于EBCDIC码与ASCII码相互转换(vb写的)
关于EBCDIC码与ASCII码相互转换(vb写的)_工学_高等教育_教育专区。EBCDIC码与ASCII...VB关于ASCII码转换成16进... 11页 免费 常用ascii码keycode&vbk... 12页 ...
VB给单片机发数据问题
VB给单片机发数据问题_信息与通信_工程科技_专业资料...'字符表示的十六进制转化为相应的整数,错误则返回...16 进制码和 ASCII 码的字符串 For n = 1 To ...
关于ASCIII码的问题
关于ASCIII码的问题_IT/计算机_专业资料。共同学习万金南 实习小编 一级|我的...进制数转换为 2 进制数 6.3.2 10 进制数转换为 8、16 进制数 6.4 二、...
(微机原理实验报告)
(16 进制数)转换成 ASCII 码 MOV MOV MOV LOP: PUSH MOV ROL POP MOV ...还有运行结果与实 际不符的问题,这些问题后来在老师和同学的帮助下得到了解决。...
更多相关标签: