我试图逐位读取一个字节,但我发现要反转的位的顺序。我被告知我,我可能读错了(有大的结尾),当我应该阅读使用小的结尾。
序列为1101 0110
。
如果我只是将每个位模式匹配,我会得到所提到的顺序,但所需的顺序是0110 1101
。
我尝试将模式匹配添加到little-size(1)
,如此
<<
test1::little-size(1),
test2::little-size(1),
test3::little-size(1),
test4::little-size(1),
test5::little-size(1),
test6::little-size(1),
test7::little-size(1),
test8::little-size(1),
>> = byte
但我仍然得到相同的位顺序,我是否需要制作一个反转它们的函数?或者它被刻入Elixir,我只是做错了?
答案 0 :(得分:3)
回答评论中的实际问题:
我想切换每个字节的两个半字节。
iex(1)> binary = <<0b11010110, 0b11010110>>
<<214, 214>>
iex(2)> for << <<a::4, b::4>> <- binary >>, into: <<>>, do: <<b::4, a::4>>
"mm"
iex(3)> <<0b01101101, 0b01101101>>
"mm"
我们在这里使用二进制理解来一次提取二进制的两个半字节,然后我们切换它们的顺序并将其插入一个新的二进制文件。