add %lB for lower case
This commit is contained in:
parent
52e5e85b02
commit
039b8c9af0
1 changed files with 39 additions and 28 deletions
|
|
@ -40,10 +40,10 @@ to32(mpint *b, char *buf, int len)
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char set16[] = "0123456789ABCDEF";
|
static char upper16[] = "0123456789ABCDEF";
|
||||||
|
static char lower16[] = "0123456789abcdef";
|
||||||
static int
|
static int
|
||||||
to16(mpint *b, char *buf, int len)
|
to16(mpint *b, char *buf, int len, char *set16)
|
||||||
{
|
{
|
||||||
mpdigit *p, x;
|
mpdigit *p, x;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
@ -123,30 +123,8 @@ to10(mpint *b, char *buf, int len)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
static char*
|
||||||
mpfmt(Fmt *fmt)
|
_mptoa(mpint *b, int base, char *buf, int len, char *set16)
|
||||||
{
|
|
||||||
mpint *b;
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
b = va_arg(fmt->args, mpint*);
|
|
||||||
if(b == nil)
|
|
||||||
return fmtstrcpy(fmt, "*");
|
|
||||||
|
|
||||||
p = mptoa(b, fmt->prec, nil, 0);
|
|
||||||
fmt->flags &= ~FmtPrec;
|
|
||||||
|
|
||||||
if(p == nil)
|
|
||||||
return fmtstrcpy(fmt, "*");
|
|
||||||
else{
|
|
||||||
fmtstrcpy(fmt, p);
|
|
||||||
free(p);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
char*
|
|
||||||
mptoa(mpint *b, int base, char *buf, int len)
|
|
||||||
{
|
{
|
||||||
char *out;
|
char *out;
|
||||||
int rv, alloced;
|
int rv, alloced;
|
||||||
|
|
@ -177,7 +155,7 @@ mptoa(mpint *b, int base, char *buf, int len)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
case 16:
|
case 16:
|
||||||
rv = to16(b, out, len);
|
rv = to16(b, out, len, set16);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
rv = to10(b, out, len);
|
rv = to10(b, out, len);
|
||||||
|
|
@ -190,3 +168,36 @@ mptoa(mpint *b, int base, char *buf, int len)
|
||||||
}
|
}
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char*
|
||||||
|
mptoa(mpint *b, int base, char *buf, int len)
|
||||||
|
{
|
||||||
|
return _mptoa(b, base, buf, len, upper16);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
mpfmt(Fmt *fmt)
|
||||||
|
{
|
||||||
|
mpint *b;
|
||||||
|
char *p;
|
||||||
|
char *set16;
|
||||||
|
|
||||||
|
b = va_arg(fmt->args, mpint*);
|
||||||
|
if(b == nil)
|
||||||
|
return fmtstrcpy(fmt, "*");
|
||||||
|
|
||||||
|
set16 = upper16;
|
||||||
|
if(fmt->flags & FmtLong)
|
||||||
|
set16 = lower16;
|
||||||
|
p = _mptoa(b, fmt->prec, nil, 0, set16);
|
||||||
|
fmt->flags &= ~FmtPrec;
|
||||||
|
|
||||||
|
if(p == nil)
|
||||||
|
return fmtstrcpy(fmt, "*");
|
||||||
|
else{
|
||||||
|
fmtstrcpy(fmt, p);
|
||||||
|
free(p);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue