将16进制字符串转化成内存二进制数据
来源:互联网 发布:网络推广策划案 编辑:程序博客网 时间:2024/06/16 11:19
在使用Ini文件的时候,发现不能向Ini文件中写入流数据。于是想了一种方法来写入流数据,其中用到了内存数据转16进制,和16进制转成
内存二进制数据,前面的内存数据转16进制的已经写过,可以看看我以前发的一个函数。今天把16进制转二进制的函数发上来,以供大家参考一下,希望能写出效率更高的转换函数来。
内存二进制数据,前面的内存数据转16进制的已经写过,可以看看我以前发的一个函数。今天把16进制转二进制的函数发上来,以供大家参考一下,希望能写出效率更高的转换函数来。
- {*************************************************************}
- {* 名称: HexToBin *}
- {* 功能: 将16进制字符串转换成二进制信息存入 *}
- {* 作者: 不得闲 *}
- {* 联系方式:suiyunonghen@gmail.com *}
- {* 时间: 2008-08-02 *}
- {* 用法: *}
- {* Mem := TMemoryStream.Create; *}
- {* Mem.SetSize(100); *}
- {* str := '不得闲'; *}
- {* writeSize := HeToBin(strToHex(Str),Mem.Memory,4); *}
- {*************************************************************}
- function HexToBin(HexStr: string;BinnryBuf: pointer;BufSize: integer): integer;
- asm
- push ebx
- push edi
- Push ecx
- mov edi,ecx
- test eax,eax
- Jz @@Exit
- test edx,edx
- Jz @@Exit
- test ecx,ecx
- Jz @@Exit
- mov edi,[eax-4]
- shr edi,1 //长度除2获得二进制实际长度
- cmp edi,ecx //比较实际长度和给定长度
- JB @@Belive //给定长度大于实际长度,直接执行,否则使用给定长度
- mov edi,ecx //使用给定长度
- @@Belive:
- xor ecx,ecx
- mov bh,[eax] //字符
- cmp bh,'0' //查看是否在0到f之间的字符
- JB @@Exit //小于0
- cmp bh,'f'
- JA @@Exit //大于f跳
- sub bh,'0'
- mov cl,bh
- mov bh,byte ptr[ecx+@@Convert]
- shl bh,4
- xor ecx,ecx
- inc eax //指针前移
- mov bl,[eax]
- cmp bl,'0' //查看是否在0到f之间的字符
- JB @@Exit //小于0
- cmp bl,'f'
- JA @@Exit //大于f跳
- sub bl,'0'
- mov cl,bl
- mov bl,byte ptr[ecx+@@Convert]
- xor ecx,ecx
- mov cl,bh
- and ebx,00FFh
- add ebx,ecx
- mov [edx],ebx
- inc eax
- inc dx
- dec edi
- JNZ @@Belive
- @@Exit:
- Pop eax
- sub eax,edi
- pop edi
- pop ebx
- ret
- @@Convert: //包含大小写的ABCDEF数组列
- DB 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1
- DB -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1
- DB -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
- DB -1,10,11,12,13,14,15
- end;
- 将16进制字符串转化成内存二进制数据
- java 二进制数据与16进制字符串相互转化
- C#将字符串转化成二进制
- 二进制转化为16进制字符串
- 将二进制数据转化成图片
- 如何将字符串转化成二进制流的字符串了?
- VB 串口发送,将文本中的字符串转化成16进制数据发送
- 将整数转化为二进制字符串
- P122 第20题 将十进制转化成二进制或八进制或16进制输出
- 将string字符串转化为16进制字符串
- 将二进制字符串转换为二进制数据
- 把内存中的数据转化成16进制显示
- 把内存中的数据转化成16进制显示
- 将16进制转化为时间字符串
- 如何将jpg格式图像文件转化成一系列二进制数据,又如何将此二进制数据转化成jpg格式的文件?
- 二进制字符串数据转换为16进制数据
- iOS 将二进制数据转换成十六进制字符串
- C# 将二进制数据转换成BASE64字符串的方法
- CAP:高可用架构的另一基石
- 如何读书?读什么样的书? 摘自《致青年朋友》
- 对Agile Simple Design的理解
- WinForm程序,保证只有一个实例在运行(网上搜集的东西)
- Delphi与汇编学习4(两个转16进制的函数)
- 将16进制字符串转化成内存二进制数据
- 加密技术概念
- 软件版本
- 读书之乐 摘自《致青年朋友》
- 总结JSP与servlet之间的传值
- [转贴]ParameterizedThreadStart,ThreadStart的使用,线程Thread传参数
- SVN服务器配置之 在Solaris9上安装apache
- 程序员保持身心健康的八种方式
- 向Ini文件中写入流数据