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

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]; } }



相关文章:
ASCII键码VB中的键码常数
ASCII键码VB中的键码常数_IT/计算机_专业资料。ASCII键码VB中的键码常数ASCII...ASCII码转换成16进制程序... 2页 1下载券 VB高级编程100例 88页 1下载券 ...
ASCII内码与VB分析
技术选考习题 命题:杜宗飞 ASCII 内码与 VB 程序 行政班: 教学班: 姓名: 学号: 一、 VB 中的内码转换函数 Asc(X) 字符转换为 ASCII Asc(A) 65 Chr(X)...
VB中常用函数及有用的KeyAscii键码
VB中常用函数及有用的KeyAscii键码_电脑基础知识_...补充说明 VAL()就是函数用于将数值字符串转换为数值...二进制,十六进制.十进制就是我们日常生活用到的数据...
VB_鼠标、键盘事件和ASCII码表
VB_鼠标、键盘事件和ASCII码表_IT/计算机_专业资料。一、鼠标事件 Cilck:用户单击...当我们在 KeyPress 事件中将 KeyAscii 的值改为 0 后,就等于禁止键入。 3...
2016年浙江高考技术选考加试题预测ASCII内码与VB程序
技术选考习题 命题:杜宗飞 ASCII 内码与 VB 程序 行政班: 教学班: 姓名: 学号: 一、 VB 中的内码转换函数 Asc(X) 字符转换为 ASCII Asc(A) 65 Chr(X)...
ASCII表 和 VB中各个按键的KeyCode值列表
ASCII 码相同:常数 vbKeyA vbKeyB vbKeyC vbKey...ASCII 非打印控制字符表 十进制 字符 十进制 字符 ...16 数据链路意 24 取消 1 头标开始 9 水平...
常用ascii码keycode&vbkey值列表
常用ascii码keycode&vbkey值列表_IT/计算机_专业资料...form 里面的 KeyPreview 属性设置为 true Private ...16 = Shift_L keycode 17 = Control_L keycode ...
更多相关标签: