我是用一个变量 存储随机获取的字符串地址, 想通过一个规则将这个字符串的末尾两位清零后再将倒数第三位进行+1操作, 希望大神 速速出现! 可追加赏分。
PS:楼上的方法很简洁,利用了awk内置函数strtonum完成了十六进制到十进制的转换。
再将末尾两位清零:
或者:
echo ab12cd34|awk '{printf ("%x\n", and(strtonum("0x"$0) + 0x100, 0xFFFFFF00))}'你给出的命令 结果为 ab12ce30 ; 我目前还看不懂 你给出的规则,但是想得到ab12ce00 需要修改哪里呢?
追答不好意思,我前面漏打了一个字符
应该是
echo ab12cd34 | awk '{printf ("%x\n", strtonum("0x"$0) + 0x100 - and(strtonum("0x"$0), 0xff))}'
其实原理很简单,假设输入数字是n,
那么a = n + 0x100 就是在低位的的第二个字节加1,
b = n & 0xff 就是低位的一个字节
两者相减a-b 就是 第二个字节加1,再将最后一个字节清零