Wait, there's more, we can also adapt Re: Opposite of strtol? like this.
This goes to the file Tohex.xs:
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include <gmp.h>
MODULE = Math::Tohex PACKAGE = Math::Tohex
SV *
tohex(num)
char *num
CODE:
char *out;
ST(0) = sv_newmortal();
mpz_t big;
mpz_init_set_str(big, num, 10);
Newx(out, 4 + mpz_sizeinbase(big, 16), char);
mpz_get_str(out, 16, big);
sv_setpv(ST(0), out);
mpz_clear(big);
Safefree(out);
This goes to the file lib/Math/Tohex.pm:
package Math::Tohex;
require Exporter;
require DynaLoader;
our $VERSION = "1.00";
our @ISA = (Exporter::, DynaLoader::);
our @EXPORT = "tohex";
bootstrap Math::Tohex::;
1;
__END__
And this goes to Makefile.PL:
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => "Math::Tohex",
VERSION_FROM => "lib/Math/Tohex.pm",
LIBS => ["-lgmp"],
);
Now compile:
perl Makefile.PL && make
and run:
perl -wE 'use Math::BigInt; say Math::BigInt->new("4335043554366887798
+866555766")->as_hex;'
and hope for no stupid mistakes leading to memory corruption.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Outside of code tags, you may need to use entities for some characters:
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.