我想通过从互联网上获取信息的脚本在OpenWRT中动态更改SSID wifi网络名称。Busybox awk:如何将String中的每个字符视为整数来执行按位运算?
因为从互联网上获取的信息可能包含多字节字符,所以它可以很容易被截断为无效的UTF-8字节序列,所以我想用awk(busybox)来修复它。但是,当我尝试对字符串和整数使用位函数and
时,结果始终返回0
。
awk 'BEGIN{v="a"; print and(v,0xC0)}'
如何在字符串中将字符视为awk中的整数,就像我们在C/C++中所做的那样? char p[]="abc"; printf ("%d",*(p+1) & 0xC0);
@EdMorton我很困惑。我可以这样做'awk'BEGIN {c = 7; print和(c,3)}''并且获得'3'和这个'awk'BEGIN {c = 7; print和(c,15)}''和得到'7'。并且'和'在这里列出... https://www.gnu.org/software/gawk/manual/html_node/Bitwise-Functions.html – 2014-10-01 21:36:37
@MarkSetchell是啊你是对的,我从来没有遇到它,没有麻烦检查。感谢您的链接。 – 2014-10-01 22:52:26
@MarkSetchell,当c是一个整数时,它工作正常。但如果c是字符/字符串,它总是会返回0. – 2014-10-02 02:42:53