0

我可以像这样返回一个十六进制数字的开头

$ printf %x $(( 0x07d00050 >> 16 ))
7d0

但是在这种情况下,我想返回 end 0050。我试过这个没有运气

$ printf %x $(( 0x07d00050 << 16 ))
7d000500000
4

2 回答 2

2

要屏蔽位,您应该使用二进制 AND 运算符,即&

printf %04x $(( 0x07d0050 & 0xffff ))
于 2013-07-09T02:53:48.457 回答
1

这有效:

printf "%04x" $(( 0x07d00050 & 0xFFFF))
于 2013-07-09T02:54:07.410 回答