That's not equivalent. It fails for negative numbers, as well as positive numbers that requires a multiple of 8 bits to represent (e.g. 128-255, and 32678-65535).
The following addresses the second of the above limitations:
sub bigint_to_bytearray { my $bigint = shift; die "Negative numbers not supported" if $bigint < 0; my @bytes = unpack('c*', $bigint->to_bytes); unshift @bytes, 0x00 if $bytes[0] < 0; # Add sign bit if necessary return @bytes; }
The above requires a relatively new version of Math::BigInt. The following is less efficient, but it works on far older versions:
sub bigint_to_bytearray { my $bigint = shift; die "Negative numbers not supported" if $bigint < 0; my @bytes = unpack('c*', pack('H*', substr($bigint->as_hex, 2))); unshift @bytes, 0x00 if $bytes[0] < 0; # Add sign bit if necessary return @bytes; }
In reply to Re^2: How to convert bigint to bytearray in perl
by ikegami
in thread How to convert bigint to bytearray in perl
by tajinderpalsingh61
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |