gpt4 book ai didi

linux - Sh, awk : how to convert integers, 在 shell 中可见为 16 位低端/大端二进制整数的字符串?

转载 作者:太空狗 更新时间:2023-10-29 11:39:44 27 4
gpt4 key购买 nike

我有一个 bash 序列,

grep "integer =" $1 | awk -F= '{printf("%d\n",int($2*327))}'

它过滤了一些产生的东西,比如:

6768
6572
6638
8403
8436
8436
8305
8502

但是,我需要将所有这些数字作为 16 位低端字(如果指定,则为大端字)放入二进制文件中。有什么 awk-、bash- 方法可以做到这一点吗?

理想情况下,它看起来像:

grep "整数 ="$1 | awk -F='{TO16BIT_LENDIAN(printf("%d\n",int($2*327)))}' >> out.bin

最佳答案

这应该有效:

cat $1 | grep "integer =" | awk -F='
function out(b)
{
if(b==0)
{
system("printf \"\\00\"");
}
else
{
printf("%c",b);
}
}
function shortToLE(n)
{
n%=65536;
msb=n/256;
lsb=n%256;
out(lsb);
out(msb);
}

{
shortToLE($2*327)
}
' >> out.bin

以及删除无用的 cat 和 grep 的优化方法:

awk -F" =" '
function out(b)
{
if(b==0)
{
system("printf \"\\00\"");
}
else
{
printf("%c",b);
}
}
function shortToLE(n)
{
n%=65536;
msb=n/256;
lsb=n%256;
out(lsb);
out(msb);
}

$1 == "integer" {
shortToLE($2*327)
}
' $1 >> out.bin

关于linux - Sh, awk : how to convert integers, 在 shell 中可见为 16 位低端/大端二进制整数的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5966238/

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