RtlMoveMemory和copymemory函数

lclichao2006 2009-02-19 10:49:49
RtlMoveMemory是API原名,在VB的API浏览器中的化名就是著名的CopyMemory
新建个模块,将一下代码考入模块, 在将启动项改为sub main 就可以运行了
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
(pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Option Explicit
Declare Sub RtlMoveMemory Lib "KERNEL32" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
Sub Main()
Dim L1 As Long, L2 As Long
L1 = &H11223344
RtlMoveMemory L2, L1, 4
MsgBox "L2=" & Hex(L2)
End Sub

AND

Option Explicit
Declare Sub RtlMoveMemory Lib "KERNEL32" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
Sub Main()
Dim bArr(3) As Byte, L As Long
L = &H11223344
RtlMoveMemory bArr(0), L, 4
MsgBox "bArr=" & Hex(bArr(0)) & Hex(bArr(1)) & Hex(bArr(2)) & Hex(bArr(3))
End Sub

这俩个运行结果怎么差那么多,尤其是第二个怎么运行结果是44332211?????
...全文
1512 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lclichao2006 2009-02-19
  • 打赏
  • 举报
回复
明白了,谢谢楼主了
zhangtian2009 2009-02-19
  • 打赏
  • 举报
回复
RUN("mstsc.exe") ;先是启动远程登陆程序
winwait("远程桌面连接") ;程序暂停到指定窗口出现为止
winactivate("远程桌面连接") ;激活指定窗口
send("主机地址") ;自动输入服务器IP
send("!n") ;然后是连接!n=alt+n
;下面就开始输入密码
winwait("主机地址 - 远程桌面")
winactivate("主机地址 - 远程桌面") ;激活指定窗口
send("123456") ;这个是密码
send("{enter}");最后按回车进入

给为老大 帮我ikankanzhduan代码好啊 怎么能在VB中实现它呢
神马都能聊 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 unsigned 的回复:]
正由于机器字节序存在差异,所以在网络通讯标准当中引入了一个网络字节序的概念,它的定义就是通过识别机器的字节序,然后转换成一种统一的big-endian字节序.
[/Quote]
听君一席话,茅塞顿开啊.
以前看TCP/IP协议时,死是个没搞懂为啥非要这样转,原来如此,太感谢了.
僵哥 2009-02-19
  • 打赏
  • 举报
回复
正由于机器字节序存在差异,所以在网络通讯标准当中引入了一个网络字节序的概念,它的定义就是通过识别机器的字节序,然后转换成一种统一的big-endian字节序.
僵哥 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lclichao2006 的回复:]
是这样吗,我第二个程序将11223344换成44332211,
则运行的结果就是11223344了,所以掌柜的你那样说是不对的
[/Quote]
经x86体系的CPU下运行,就是楼主现在看到的结果,x86体系在存储多字节数据的时候是按低字节到高字节的顺序存储的,所以0x11223344当中就被按照0x44,0x33,0x22,0x11如此的顺序存储,其它如Sun的机器则是按0x11,0x22,0x33,0x44的顺序存储的,这个叫作机器字节序(host byte order)
lclichao2006 2009-02-19
  • 打赏
  • 举报
回复
是这样吗,我第二个程序将11223344换成44332211,
则运行的结果就是11223344了,所以掌柜的你那样说是不对的
Tiger_Zhao 2009-02-19
  • 打赏
  • 举报
回复
&H11223344 是按人的书写习惯表示的一个逻辑值,与你使用 Windows 还是 Mac 机无关。
Windows 的字节序叫 little-endian,意思是低字节存放在前面,表示时一般字节中间加分隔符以示区分 "44-33-22-11"。
PctGL 2009-02-19
  • 打赏
  • 举报
回复

你的结果充分的说明,你的测试过程准确无误

你可以再把那个 44332211 copymemory 复制到一个 long 变量里面,看看结果

这是windows所采用的一种算法? 表示方法? 忘了该叫什么了,这种方法比较接近现实

因为内存是由低到高的排列的
44332211
也是由低到高排列的,如果翻译成人理解这串数据的意思,就应该是 11223344 了,由高到低

这些都是自左至右说的, 这涉及到一个很专业很有名的算法,我也忘了叫啥了... 去找找看吧
内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模与代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析与故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊中关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划与运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展与论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码与模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑与仿真建模细节,结合所提供的复现案例深化对优化模型与工程应用场景的理解,提升科研效率与创新能力。

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧