本文介绍了二进制格式,有位操作?例如。 << 16#7楼,16#FF>> BSL 1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Erlang中,有位操作对整数操作,例如:
1 GT 127 BSL 1。
254
也有打包成整数的字节序列
的能力 &LT和LT 16#7楼,16#FF&GT和GT
有可能,还是有可以执行位运算的运算符或内建函数(如AND,OR,XOR,SHL,SHR)二进制数据打包?
例如(如果BSL的二进制包的工作 - 它不会):
1 GT&LT和LT 16#7楼,16#FF&GT跑车和GT BSL 1。
&LT和LT 255,254 GT和GT
解决方案
试用这种方式:
BBSL(彬,移位) - GT; << _:Shift键,REST /位>> =斌<< REST /位,0:移位>&GT ;.
In erlang, there are bitwise operations to operate on integers, for example:
1> 127 bsl 1.
254
there is also the ability to pack integers into a sequence of bytes
<< 16#7F, 16#FF >>
is it possible, or are there any operators or BIFs that can perform bitwise operations (eg AND, OR, XOR, SHL, SHR) on binary packed data?
for example (if bsl worked on binary packages - which it does not):
1> << 16#7F, 16#FF >> bsl 1.
<< 255, 254 >>
解决方案
Try out this way:
bbsl(Bin,Shift) -> <<_:Shift,Rest/bits>> = Bin, <<Rest/bits,0:Shift>>.
这篇关于二进制格式,有位操作?例如。 &LT;&LT; 16#7楼,16#FF&GT;&GT; BSL 1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!