Board logo

标题: [注册表类] [已解决]批处理如何高效转换注册表REG_QWORD小端数值?Little-Endian [打印本页]

作者: aries215    时间: 2024-8-29 09:59     标题: [已解决]批处理如何高效转换注册表REG_QWORD小端数值?Little-Endian

注册表值REG_QWORD属于64位 Little-Endian,那个reg2cmd竟将结果转为科学记数法,若用手工倒叙改写太伤神。
  1. "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
  1. @echo off &setlocal enabledelayedexpansion
  2. for %%n in (11,11,10,01,01,01,11,11) do set "_n=%%n!_n!"
  3. echo,!_n!
  4. endlocal&pause&exit/b
复制代码
  1. @echo off &setlocal enabledelayedexpansion
  2. for %%n in (01 23 45) do set "_n=%%n!_n!"
  3. echo,!_n!
  4. 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