How to convert 8 bytes to a double value

25 visualizaciones (últimos 30 días)
John Smith
John Smith el 5 de Nov. de 2020
Comentada: Yelile Iga el 9 de Oct. de 2022
Hi,
Matlab script takes values from an udp server. Server respond contains 8 bytes so it is needed to convert this 8 bytes to an double value in matlab script.
My script:
u = udp('127.0.0.1', 49012, 'LocalPort', 85);
fopen(u);
fprintf(u,"request");
data = fread(u); % reads 8 bytes
data = typecast(str2num(sprintf('%d%d%d%d%d%d%d%d',data(1),data(2),data(3),data(4),data(5),data(6),data(7),data(8))), 'double');
disp(data)
for example its received data is as follows:
147, 190, 144, 143, 145, 126, 68, 64
It is converted to double as
1.4719e+21
but orginal value is about to 41
Note: There is no problem in server. I tested it using C# and received correct results.
Note: Reading value as double was tried like as follows:
fread(u, size, 'double')
However, this method does not make any difference.

Respuesta aceptada

Bruno Luong
Bruno Luong el 5 de Nov. de 2020
>> typecast(uint8([147, 190, 144, 143, 145, 126, 68, 64]),'double')
ans =
40.9888
  2 comentarios
John Smith
John Smith el 5 de Nov. de 2020
thank you
Yelile Iga
Yelile Iga el 9 de Oct. de 2022
we have the same poblem, can you help us?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Installation en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by