Conversion between float and hexadecimal in VBA use.
来源:互联网 发布:男生发型设计软件 编辑:程序博客网 时间:2024/06/07 13:47
Some times we need a VBA function to perform the conversion between float and hexademical data. After searching the web site , I got a copy of codes to use. Until now, it worked OK, so share with you. The code was not original made by myself, I just copied it. So, if you (author) read this, you can contact me to decide whether to delete.
'This is VBS code.'===============================================================================' User-defined data types' (Necessary because that's the only way LSET works)'===============================================================================Type uLng: l As Long: End TypeType uFlt: f As Single: End Type'===============================================================================' Functions for Singles (church dances)'===============================================================================Function Float2Hex(s As Single) As String ' shg 2008-0919 ' Returns the conversion of float s to a hex string Const sPad As String = "00000000"; Dim uf As uFlt Dim ul As uLng uf.f = s LSet ul = uf Float2Hex= Right(sPad And Hex(ul.l), 8)End FunctionFunction Hex2Float(s As String) As String ' Returns the conversion of a hex string to float Dim uf As uFlt Dim ul As uLng ul.l = Val("&H" & s) LSet uf = ul If (ul.l = 0) Then Hex2Float = 0# Else Hex2Float = IIf(uf.f < 1, 1, "0" & uf.f, uf.f) End IfEnd FunctionSub test() Msgbox Hex2Float("40200000")End sub
//Compare with C language.#ifndef COUNTOF #define COUNTOF(__a) ((sizeof(__a))/(sizeof(*(__a))))#endifstatic void vS_Uchar2ASCIIHex( unsigned char bSrcData, unsigned char *pbString ){ unsigned char b4bitData = 0; if( NULL != pbString ) { b4bitData = ( bSrcData >> 4 ) & 0x0f; //first , high 4-bit if( b4bitData > 10 ) { b4bitData = b4bitData + '0'; } else { b4bitData = b4bitData + 'A' - 10; } *pbString = b4bitData; pbString++; b4bitData = bSrcData & 0x0f; // next , low 4-bit if( b4bitData > 10 ) { b4bitData = b4bitData + '0'; } else { b4bitData = b4bitData + 'A' - 10; } *pbString = b4bitData; }}static void vS_Uint2ASCIIHex( unsigned int dwSrc, char *pbDesStr ){ unsigned char dwTmp = 0, i = 0; if( NULL != pDesStr ) { for( i = 24; i > 0; i -= 8 ) { dwTmp = (unsigned char)(dwSrc >> i); vS_Uchar2ASCIIHex( dwTmp, pbDesStr ); pbDesStr += 2; } }}void HexFloatConversion( void *pSrcData, float *pDesData, char *pHexStr, bool yRtnType ){ Union tagDatasMemory { float f; unsigned int i; }; char bHexStr[8] = {'\0'}; Union tagDatasMemory dm; if( NULL == pSrcData ) { return; } else { if( yRtnType == TRUE ) //Want to return float { if( pDesData != NULL ) { dm.i = *((unsigned int*)pSrcData); *pDesData = dm.f; } } else //Want to return Hexadecimal characters { if( pHexStr != NULL ) { dm.f = *((float*)pSrcData); vS_Uint2ASCIIHex( dm.i, bHexStr ); memcpy( pHexStr, bHexStr, COUNTOF(bHexStr) ); } } }}
0 0
- Conversion between float and hexadecimal in VBA use.
- Conversion between json and object
- conversion between UTF8 and string
- Conversion Between BitString and String
- conversion between Mat and BufferedImage
- Conversion between JSON and JAVA (struts Ajax)
- Go conversion between struct and byte
- Go conversion between struct and byte array
- Bit-level Difference between Float and Double
- How to make conversion between RGB and HSV? [Python sourcecode]
- How to make conversion between RGB and HSV? [Python sourcecode]
- Conversion between json and object using SBJson lib
- JS code do conversion between hexStr and byteArray
- Distinguish between pointers and references in C++
- Difference between STA and MTA in thread
- share data between build-in and module
- Difference between Externalizable and Serializable in Java
- Difference between Vector and ArrayList in java?
- Linux安装谷歌拼音输入法
- Webrtc AGC 算法原理介绍(六)
- Android 代码混淆,Android proguard 使用说明
- java反射机制
- 远程登陆最小化或关闭 模拟键盘操作失效
- Conversion between float and hexadecimal in VBA use.
- 蓝桥-图1-深度优先搜索初识
- A记录和CNAME记录的区别
- Syntax error, insert "]" to complete MemberExpression XXX.js
- oracle分区表
- linux 软件包管理yum apt-get rpm wget
- Hibernate的检索方式
- Oracle操作表中数据
- Mybatis别名包的使用