009集——vba实现内存中大小端序的转换(附不同进制转换代码)

         小端序为很多系统默认的数据存储方式,但有些数据格式为大端序模式解读文件,因此我们需将小端序字节颠倒排序,这样用大端序模式解读此文件,最后即可读取我们想要的内容。方法如下:

Function SwapEndian(ByVal value As Long) As Long
    ' 将 Long 类型的值拆分为 4 个 Byte
    Dim byte1 As Long, byte2 As Long, byte3 As Long, byte4 As Long
    byte1 = value Mod 256      ' 最低有效字节
    value = value \ 256        ' 移除最低有效字节
    byte2 = value Mod 256      ' 次低有效字节
    value = value \ 256
    byte3 = value Mod 256      ' 次高有效字节
    value = value \ 256
    byte4 = value              ' 最高有效字节
      
    ' 交换字节顺序以从大端序排列
    Dim temp As Long
    temp = byte1
    byte1 = byte4
    byte4 = temp
    temp = byte2
    byte2 = byte3
    byte3 = temp
    SwapEndian = byte4 * &H100000 + byte3 * &H1000 + byte2 * &H10 + byte1
    ' 将交换后的字节重新组合为 Long 类型的值
End Function
  
Sub endiancovert()
    Dim mylong As Long
    ' 假设 mylong 是你要转换的 Long 类型值
    mylong = 1000
 
    'MsgBox mylong & "  转为十六进制为: " & Hex(mylong)
    mylong = SwapEndian(mylong)
    'MsgBox "端序转换后为: " & Hex(mylong)
    MsgBox "转换端序后对应的数为:" & mylong
End Sub

&H :

&H 是一个前缀,用于表示接下来的字符是十六进制(Hexadecimal)数值。VBA 支持多种数字表示法,包括十进制(默认)、八进制(使用 &O 前缀)和十六进制(使用 &H 前缀)。

十六进制是一种基数为 16 的数制系统,它使用 0-9 的十个阿拉伯数字和 A-F(或小写 a-f)的六个英文字母来表示数值。其中,A-F 代表十进制的 10-15。

例如,在 VBA 中,你可以使用十进制表示法来声明一个整数变量:

 

vba复制代码

Dim decimalValue As Integer
decimalValue = 255

或者,你可以使用十六进制表示法来声明并初始化同一个整数变量:

 

vba复制代码

Dim hexValue As Integer
hexValue = &HFF

在这两个例子中,decimalValue 和 hexValue 都将包含相同的数值,即十进制的 255,十六进制的 FF。

使用十六进制表示法在某些情况下非常有用,特别是当你处理二进制数据、内存地址、颜色代码(如 RGB 值)或其他需要直接操作位模式的场景时。

在这里说下hex函数

Hex 函数

      

返回代表十六进制数值的 String。

语法

Hex(number)

必要的 number 参数为任何有效的数值表达式或字符串表达式。

说明

如果 number 还不是一个整数,那么在执行前会先被四舍五入成最接近的整数。

如果 number 所得为
NullNull
Empty零 (0)
任何其他的数字最多可到八个十六进制字符。

        适当范围内的数字,前缀以 &H,可以直接表示十六进制数字。例如,十六进制表示法的 &H10 代表十进制的 16。

十六进制数转为10进制可用如下函数:Val(&H10)

Val 函数

      返回包含于字符串内的数字,字符串中是一个适当类型的数值。

十六进制与二进制转换代码:

Function HexToBinary(ByVal hexString As String) As String
    ' 将16进制字符串转换为十进制数
    Dim decimalValue As Long
    decimalValue = Val("&H" & hexString)
      
    ' 将十进制数转换为二进制字符串
    HexToBinary = DecToBin(decimalValue)
End Function
  
' 辅助函数:将十进制数转换为二进制字符串
Function DecToBin(ByVal decimalValue As Long) As String
    Dim binaryString As String
    Dim remainder As Long
      
    ' 循环直到十进制数为0
    Do While decimalValue > 0
        ' 取余数作为当前位
        remainder = decimalValue Mod 2
        binaryString = CStr(remainder) & binaryString
        ' 整除2
        decimalValue = decimalValue \ 2
    Loop
      
    ' 如果二进制字符串为空,则返回"0"
    If binaryString = "" Then
        binaryString = "0"
    End If
      
    ' 返回二进制字符串
    DecToBin = binaryString
End Function
Sub TestHexToBinary()
    Dim hexNumber As String
    Dim binaryNumber As String
      
    hexNumber = "a" ' 十六进制数
    binaryNumber = HexToBinary(hexNumber) ' 转换为二进制数
      
    ' 显示结果
    MsgBox "Binary value: " & binaryNumber
End Sub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/390235.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

问题:在额定电压500V以下的电路中,使用的各种用电设备,一般称为(_ _ _)用电设备 #媒体#媒体#媒体

问题:在额定电压500V以下的电路中,使用的各种用电设备,一般称为(_ _ _)用电设备 参考答案如图所示

Go语言中的加密艺术:深入解析crypto/subtle库

Go语言中的加密艺术:深入解析crypto/subtle库 引言crypto/subtle库概览ConstantTimeCompare函数深入解析ConstantTimeSelect函数应用详解ConstantTimeLessOrEq函数实践指南安全编程实践性能优化与最佳实践与其他加密库的比较总结 引言 在当今快速发展的互联网时代&…

pygame入门学习(四)位图的使用

大家好!我是码银🥰 欢迎关注🥰: CSDN:码银 公众号:码银学编程 载入图片 pygame.image.load( ),Pygame 可以通过pygame.image.load( )函数处理位图文件。 大致可以支持以下文件:JPG…

AI - 碰撞避免算法分析(ORCA)

对比VO/RVO ORCA算法检测碰撞的原理和VO/RVO基本一样的,只是碰撞区域的计算去掉了一定时间以外才可能发生的碰撞,因此碰撞区域的扇形去掉了前面的部分,由圆锥头变成了个圆 另一个最主要的区别是,求新的速度,是根据相…

基于SSM的图书馆预约占座系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的图书馆预约占座系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring…

第7讲 SpringSecurity执行原理概述

SpringSecurity执行原理概述 spring security的简单原理: SpringSecurity有很多很多的拦截器,在执行流程里面主要有两个核心的拦截器 1,登陆验证拦截器AuthenticationProcessingFilter 2,资源管理拦截器AbstractSecurityInterc…

掌握这些机器学习算法优缺点,面试轻松应对

掌握这些机器学习算法优缺点,面试轻松应对 面试官问到机器学习算法,你是否能够信手拈来?今天就为大家分享几个关键算法的优缺点,从KNN到Adaboosting,每个算法都有其独特之处。 比如,KNN简单直观,适合解决分…

交大论文下载器

原作者地址: https://github.com/olixu/SJTU_Thesis_Crawler 问题: http://thesis.lib.sjtu.edu.cn/的学位论文下载系统,该版权保护系统用起来很不方便,加载起来非常慢,所以该下载器实现将网页上的每一页的图片合并…

[ai笔记7] google浏览器ai学习提效定制优化+常用插件推荐

欢迎来到文思源想的ai空间,这是技术老兵重学ai以及成长思考的第7篇分享! 工欲善其事必先利其器,为了ai学习的效能提升,放假期间对google浏览器做了一次系统整改,添加了一些配置和插件,这里既有一些显示、主…

离散数学截图2

为什么G中阶大于2的元素,一定有偶数个 在有限群G中,阶大于2的元素个数一定是偶数的原因如下: 设 aaa 是群G中一个阶大于2的元素,那么根据群的定义和阶的概念(即某个元素的幂次使得其等于单位元的最小正整数&#xff…

防御保护--内容安全过滤

目录 文件过滤 内容过滤技术 邮件过滤技术 应用行为控制技术 DNS过滤 URL过滤 防火墙 ---- 四层会话追踪技术 入侵防御 ---- 应用层深度检测技术 深度包检测深度流检测 随着以上俩种的成熟与完善,提出了所谓的内容安全过滤 当然上网行为确实需要治理&…

【html学习笔记】2.基本元素

1.标题 标题会自动粗体其中大写的内容&#xff0c;并带有换行的效果会使用<h1>到<h6>表示不同大小的标题 <h1>标题1</h1> <h2>标题2</h2> <h3>标题3</h3> <h4>标题4</h4> <h5>标题5</h5> <h6>…

NumPyML 源码解析(七)

numpy-ml\numpy_ml\trees\gbdt.py # 导入 numpy 库并重命名为 np import numpy as np# 从当前目录下的 dt 模块中导入 DecisionTree 类 # 从当前目录下的 losses 模块中导入 MSELoss 和 CrossEntropyLoss 类 from .dt import DecisionTree from .losses import MSELoss, Cross…

java8新特性——StreamAPI

说明&#xff1a; java8中有两大最为重要的改变。第一个是Lambda表达式&#xff1b;另外一个则是Stream API。 Stream API&#xff08;java.util.stream&#xff09;把真正的函数式编程风格引入java。这是目前为止对java类库最好的补充&#xff0c;因为Stream API可以极大提供j…

基于微信小程序的在线课堂的研究与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Codeforces Round 926 (Div. 2) B. Sasha and the Drawing (Java)

Codeforces Round 926 (Div. 2) B. Sasha and the Drawing (Java) 比赛链接&#xff1a;Codeforces Round 926 (Div. 2) B题传送门&#xff1a;B. Sasha and the Drawing 题目&#xff1a;B. Sasha and the Drawing Example input 3 4 3 3 3 10 3 9 4 7 7 11 2 3output 2 …

VMware Workstation 17.0 虚拟机安装MS-DOS 7.1完整详细步骤图文教程

VMware Workstation 17.0 虚拟机安装MS-DOS 7.1完整详细步骤图文教程 一、配置MS-DOS虚拟机机器环境二、安装MS-DOS磁盘操作系统 一、配置MS-DOS虚拟机机器环境 1.打开VMware Workstation Pro 2.新建虚拟机 3.建议选择【典型】&#xff0c;之后点击【下一步】 关于【自定义…

前端秘法基础式(CSS)(第一卷)

一.认识CSS CSS 指的是层叠样式表&#xff08;Cascading Style Sheets&#xff09;&#xff0c;它是一种用于描述网页外观和布局的语法 CSS 可以定义网页中元素的字体、颜色、大小、位置、背景等样式&#xff0c;使网页具有美观的外观和统 一的风格。 通过将 CSS 样式表与 HTML…

Qt Creator 继承分文件编写代码流程实现简单案列

Qt Creator 继承分文件流程实现简单案列 打开Qt Creator&#xff0c;新建c项目 添加类 完成之后&#xff0c;会自动生成.h和.cpp文件 一、animal.h文件 主要用来写类&#xff0c;包括成员变量和函数 #ifndef ANIMAL_H #define ANIMAL_H #include <iostream> #inclu…

C#上位机与三菱PLC的通信04--MC协议之A-1E报文测试

到目前为止&#xff0c;还没有网上有哪个文章有我如此的报文分析&#xff0c;操作实例&#xff0c;一大批都是抄来抄去&#xff0c;没有截图&#xff0c;没有说明&#xff0c;没有实例&#xff0c;有卵用呀&#xff0c;仅以此文章献给最爱的粉丝&#xff0c;希望对各位大师有些…