Variable length binary number to signed integer representation
16 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2021-5-28
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Numeric Types 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!