Fuh*_*tor 3 bitwise-operators pharo
在Pharo中,我想对整数进行位掩码,在Python中如下所示:
((b1 & 0x3F) << 4) | (b2 >> 4)
Run Code Online (Sandbox Code Playgroud)
我知道这一点,&并且|在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
Run Code Online (Sandbox Code Playgroud)
这基本上意味着您的代码将可以立即使用,除了将十六进制C样式转换为十六进制Pharo样式之外:
((b1 & 16r3F) << 4) | (b2 >> 4)
Run Code Online (Sandbox Code Playgroud)