How to generate a large integer from smaller integers?

2 views (last 30 days)
e.g {67,114,121} should yield a biginteger 4420217. also vice versa...4420217 should be converted back to {67,114,121}..some function similar to Mathematica function FromDigits[list,b]-takes the digits to be given in base b and constructs an integer from the list of its digits.

Accepted Answer

Stephen23
Stephen23 on 27 Feb 2018
Edited: Stephen23 on 27 Feb 2018
Pure math solution, no bit-bashing:
>> val = 4420217;
>> vec = fix(mod(val./256.^(floor(log2(val)/8):-1:0),256))
vec =
67 114 121
>> sum(vec.*256.^(numel(vec)-1:-1:0))
ans =
4420217

More Answers (1)

Walter Roberson
Walter Roberson on 27 Feb 2018
Edited: Walter Roberson on 27 Feb 2018
X = [67,114,121];
sum(X.*256.*(length(X)-1:-1:0))
  3 Comments
Walter Roberson
Walter Roberson on 27 Feb 2018
You can also use typecast to create the numbers but you have to pad with 0 before doing the typecast. You also need to swap the bytes after doing the typecast.

Sign in to comment.

Categories

Find more on Numeric Types in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!