Ruby ruby 获取由两个字节的 12 个比特位组成的一个整型值

zqalyc · 2014年10月28日 · 最后由 zqalyc 回复于 2014年10月29日 · 3032 次阅读

每个数据点由两个字节的 12 个比特位组成一个整型值: 取第一个字节的低 5 位比特位,取第二个字节的低 7 个比特位,按照顺序组成一个整型值 请问这个方法要怎么写?

这样写有问题么?

data="abcd"
bit_data=data.unpack(b*)
bit_data=bit_data[0]
data_int=[]
len=bit_data.length/16
len.times do |i|
    start=i*16
    data_c=bit_data[start,16] # 获取两个字节的16位比特位
    data_d=data_c[0,5]+data_c[8,7]
    data_d_int=data_d.to_i 2  # 12位bit转换成整型  
    data_int.push(ecg_d_int)
 end
正确写法
(('a'.ord & 0b11111) << 7) | ('b'.ord & 0b1111111)

(('a'.ord & 0b11111) << 7) | ('b'.ord & 0b1111111)

LS 正解。

#1 楼 @windwiny 有 api 么?给些讲解资料,谢谢

需要 登录 后方可回复, 如果你还没有账号请 注册新账号