当前位置:文档之家› VB关于ASCII码转换成16进制的问题

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

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

有这样一团代码:他能实现字符串转换成 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 码代码 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
int char2int(char ch) { 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); /*奇数长度,按右对齐方式处理*/ 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]; } }

相关主题
文本预览
相关文档 最新文档