在 Pharo 中,我想对整数进行位掩码,在 Python 中看起来像这样:
((b1 & 0x3F) << 4) | (b2 >> 4)
我知道
&
和 |
在 Pharo 中工作,但我很确定它们不是位明智的。 最佳答案
但你错了:)
看一下 Pharo 中 &
、 |
、 <<
、 >>
的实现:
& aNumber
^ self bitAnd: aNumber
| anInteger
^self bitOr: anInteger
<< shiftAmount
"left shift"
shiftAmount < 0 ifTrue: [self error: 'negative arg'].
^ self bitShift: shiftAmount
>> shiftAmount
"right shift"
shiftAmount < 0 ifTrue: [self error: 'negative arg'].
^ self bitShift: 0 - shiftAmount
这基本上意味着您的代码将开箱即用,除了将十六进制 C 样式转换为十六进制 Pharo 样式:
((b1 & 16r3F) << 4) | (b2 >> 4)
关于bitwise-operators - 如何做位掩码操作Pharo?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56301961/