Variable length binary number to signed integer representation
15 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Andrew Campbell
el 28 de Mayo de 2021
Respondida: Walter Roberson
el 28 de Mayo de 2021
I have a variable length text representation of a binary number up to 64 "bits" long. I want to be able to convert this back to a singed integer representation of the number.
This is what I have so far, but a few problems are encountered:
binNum = '11000000' %for example decimal 192, I want it to be read as -64
typecast(uint64(bin2dec(binNum)),'int64')
issues:
- the leading '1' is dropped and not read in correctly
- if appending 1's to the front to fill up the 64 bits maximum, bin2dec only supports 53 bits
- unit8 cannot be used since binNum can be from 1 bit in size to 64 bits
I am thinking I will need to write my own funciton, but was wondering if there was a built in way to handle this problem
0 comentarios
Respuesta aceptada
Walter Roberson
el 28 de Mayo de 2021
binNum = '11000000';
bin64 = uint64([repmat(binNum(1), 1, 64-length(binNum)), binNum] - '0')
outu64 = sum(bin64 .* uint64(2).^uint64(63:-1:0), 'native')
fprintf('%016x', outu64)
outs64 = typecast(outu64, 'int64')
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Numeric Types en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!