View Raw SPL
/* convert integer to hex string */
int2hex(ival, nbytes)
{
local hval, mask, fmt, hex_bitmode, is64;
if (argc < 2)
{
if (argc < 1) error("int2hex - input scalar required");
nbytes = -1;
}
/* 64-bit native integers? */
is64 = (intmax() > 2^32);
if (is64)
{
ival = castint(ival);
}
else
{
/* convert to integer scalar */
ival = int(castreal(ival));
}
if (nbytes > 0)
{
mask = 2^(8 * nbytes) - 1;
if (mask <= bitmax)
{
ival &= mask;
}
fmt = sprintf("0x%%0%dllX", 2 * nbytes);
}
else
{
/* check configuration mode */
hex_bitmode = castint(getconf("hex_bitmode"));
if (is64 || (hex_bitmode & 0x02))
{
/* 64 bit */
fmt = "0x%04llX";
}
else if (hex_bitmode & 0x01)
{
/* check range */
fmt = (abs(ival) > 2^32) ? "0x%04llX" : "0x%04lX";
}
else
{
/* 32 bit mode */
fmt = "0x%04lX";
}
}
hval = sprintf(fmt, ival);
return(hval);
}