dissector byte swap words in double field
Hi,
I am writing a dissector using lua for data that contains 64-bit floating point numbers. I need to byte swap the bytes in each individual word in the number so that the value is displayed correctly. By this I mean that the number is transmitted as:
0011223344556677
but needs to have each word swapped so the number is read as
1100332255447766
.
Currently in my dissector I have declared
fins_proto.fields.fp64 = ProtoField.double("fins.fp64", "FP64")
and have a function that extracts an array of floats function addFloats(buffer, subtree)
for idx = 0, buffer:len()-1, 8 do
subtree:add(fins_proto.fields.fp64, buffer(idx,8))
end
end
In order to perform the correction, I have tried to extract and concatenate individual words but get the error
attempt to perform arithmetic on a userdata value
.
subtree.add(fins_proto.fields.fp64,
((((((((buffer(idx+1,1) * 256) +
buffer(idx,1) * 256) +
buffer(idx+3,1) * 256) +
buffer(idx+2,1) * 256) +
buffer(idx+5,1) * 256) +
buffer(idx+4,1) * 256) +
buffer(idx+7,1) * 256) +
buffer(idx+6,1)))
Is there a simple way of performing this swap from the trb buffer and then evaluating the bytes as a real number?
thanks dan