gpt4 book ai didi

bash - 如何重复给定的十六进制字符串

转载 作者:行者123 更新时间:2023-11-29 09:42:57 25 4
gpt4 key购买 nike

假设我有一个 7 字节的文件,名为 test.dat。如果我用 HEX 编辑器打开 test.dat,代码将是

1F 2E 3D 4C 5B 6A 70

(代码无任何意义,仅供测试!)

现在,我想要生成 7000000 字节的文件,它可能被称为 milliontest.dat,通过重复这个十六进制代码 1000000 次。欢迎使用批处理或 bash。

谢谢你帮助我!

最佳答案

简单的方法

@echo off    
(
For /l %%n in (1,1,1000000) do copy milliontest.dat /B + test.dat /B milliontest.dat /B
) >nul 2>nul

快捷方式

这个工作非常快(在我的旧机器上 0.2 秒),它是纯 dos 批处理解决方案。

@echo off

setlocal EnableDelayedExpansion

>test.dat set /p ".=1234567" <nul
copy test.dat /B tmp.dat >nul

set Times=1000000

(
for /l %%n in (1,1,31) do (
set /A "bit=Times %% 2, Times/=2"
If !bit! equ 1 copy milliontest.dat /B + tmp.dat /B milliontest.dat /B
if !Times! gtr 0 (
copy tmp.dat /B + tmp.dat /B tot.dat /B
del tmp.dat
ren tot.dat tmp.dat
) >nul 2>nul
)
) > milliontest.dat

del tmp.dat

exit /b

正如Aacini所说,我解释了这个方法。这个方法是将文件test.dat的字节数乘以一百万。这使用 Bynary Multiplication

"In base 2, long multiplication reduces to a nearly trivial operation. For each '1' bit in the multiplier, shift the multiplicand an appropriate amount and then sum the shifted values. Depending on computer processor architecture and choice of multiplier, it may be faster to code this algorithm using hardware bit shifts and adds rather than depend on multiplication instructions, when the multiplier is fixed and the number of adds required is small."

更简单的方法

这样可以减少复制命令的数量。每 10 个副本重复使用结果。为了达到这个结果,使用 6 个循环来表示一百万,因为零的数量是六个。

copy test.dat /B tmp.dat >nul /B
copy tmp.dat /B milliontest.dat /B

For /l %%d in (1,1,6) do (
For /l %%n in (1,1,9) do copy milliontest.dat /B + tmp.dat /B milliontest.dat /B
copy milliontest.dat /B tmp.dat /B
) >nul

对于加倍文件,我已尝试使用:

type tmp.dat>>tmp.dat

但是发生错误,而不是我使用 COPY 代替。

编辑:始终将 TYPE 命令替换为 COPY。 TYPE 在文本文件上工作。

关于bash - 如何重复给定的十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35620974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com