标题: [注册表类] [已解决]批处理如何高效转换注册表REG_QWORD小端数值?Little-Endian [打印本页]
作者: aries215 时间: 2024-8-29 09:59 标题: [已解决]批处理如何高效转换注册表REG_QWORD小端数值?Little-Endian
注册表值REG_QWORD属于64位 Little-Endian,那个reg2cmd竟将结果转为科学记数法,若用手工倒叙改写太伤神。- "Options"=hex(b):11,11,10,01,01,01,11,11
复制代码
不用PowerShell和VBS,有没有什么小工具可以批量转换为 reg add 命令能用的 /d "0x1111010101101111"?
用批处理有没有简洁高效的写法?谢谢!
作者: aloha20200628 时间: 2024-8-29 14:00
回复 1# aries215
用本坛管理员的话说》你的原始数据啥样?你要的结果数据啥样?
作者: aries215 时间: 2024-8-29 14:40
本帖最后由 aries215 于 2024-8-29 15:39 编辑
回复 2# aloha20200628
关键原始数据就是这样啊,你们只取值 set "var=11,11,10,01,01,01,11,11" 也没问题,转为"0x1111010101101111"导入才正确。
在线转换 https://www.toolhelper.cn/Digit/LittleBigEndianConvert
大小端转换是两个数为一组倒序(中间应无空格和其它符号):
01 23 45 --> 45 23 01
作者: Five66 时间: 2024-8-29 15:11
啊,那不是二进制方式么
这二进制方式跟大小端有啥关系
作者: aloha20200628 时间: 2024-8-29 15:40
回复 3# aries215 - @echo off &setlocal enabledelayedexpansion
- for %%n in (11,11,10,01,01,01,11,11) do set "_n=%%n!_n!"
- echo,!_n!
- endlocal&pause&exit/b
复制代码
- @echo off &setlocal enabledelayedexpansion
- for %%n in (01 23 45) do set "_n=%%n!_n!"
- echo,!_n!
- endlocal&pause&exit/b
复制代码
作者: aries215 时间: 2024-8-29 15:42
本帖最后由 aries215 于 2024-8-29 19:23 编辑
回复 5# aloha20200628
巧妙,确实高效实现!感谢帮忙!
请问,echo后面用逗号和分号有何区别?我问通义,答不是标准用法?
------------------
搜到echo教程:www.bathome.net/viewthread.php?tid=18352
作者: aloha20200628 时间: 2024-8-29 16:24
回复 6# aries215
有人测试过,用 echo,... 或 echo;... 或 echo=... 的输出效率最高,且能避免用 echo ... 会出现因 ... 为空值时的报警信息
作者: aries215 时间: 2024-8-29 19:15
回复 4# Five66
hex(b) 和 hex 完全不同
作者: buyiyang 时间: 2024-8-29 21:35
本帖最后由 buyiyang 于 2024-8-29 21:39 编辑
好奇你是怎么获得小端排序的数据的,字节序不是在内存里吗?
试了一下,注册表编辑器中的和reg命令输入输出的数据都是经过CPU处理的,奇怪的是用注册表导出却直接就是小端排序的数据。
作者: Five66 时间: 2024-8-29 22:40
回复 9# buyiyang
注册表导出说不定也许是跟随cpu架构的 , 原汁原味的数据
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |