added moo_byte_to_ucstr()
This commit is contained in:
parent
3a27f74492
commit
e136427d63
@ -609,17 +609,37 @@ MOO_EXPORT moo_oow_t moo_count_bcstrl (
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
#define MOO_BYTE_TO_BCSTR_RADIXMASK (0xFF)
|
||||
#define MOO_BYTE_TO_BCSTR_LOWERCASE (1 << 8)
|
||||
#define MOO_BYTE_TO_OOCSTR_RADIXMASK (0xFF)
|
||||
#define MOO_BYTE_TO_OOCSTR_LOWERCASE (1 << 8)
|
||||
|
||||
#define MOO_BYTE_TO_UCSTR_RADIXMASK MOO_BYTE_TO_OOCSTR_RADIXMASK
|
||||
#define MOO_BYTE_TO_UCSTR_LOWERCASE MOO_BYTE_TO_OOCSTR_LOWERCASE
|
||||
|
||||
#define MOO_BYTE_TO_BCSTR_RADIXMASK MOO_BYTE_TO_OOCSTR_RADIXMASK
|
||||
#define MOO_BYTE_TO_BCSTR_LOWERCASE MOO_BYTE_TO_OOCSTR_LOWERCASE
|
||||
|
||||
moo_oow_t moo_byte_to_ucstr (
|
||||
moo_oob_t byte,
|
||||
moo_uch_t* buf,
|
||||
moo_oow_t size,
|
||||
int flagged_radix,
|
||||
moo_uch_t fill
|
||||
);
|
||||
|
||||
moo_oow_t moo_byte_to_bcstr (
|
||||
moo_uint8_t byte,
|
||||
moo_oob_t byte,
|
||||
moo_bch_t* buf,
|
||||
moo_oow_t size,
|
||||
int flagged_radix,
|
||||
moo_bch_t fill
|
||||
);
|
||||
|
||||
#if defined(MOO_OOCH_IS_UCH)
|
||||
# define moo_byte_to_oocstr moo_byte_to_ucstr
|
||||
#else
|
||||
# define moo_byte_to_oocstr moo_byte_to_bcstr
|
||||
#endif
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
MOO_EXPORT int moo_get_ucwidth (
|
||||
|
@ -490,9 +490,43 @@ moo_oow_t moo_rotate_uchars (moo_uch_t* str, moo_oow_t len, int dir, moo_oow_t n
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
moo_oow_t moo_byte_to_bcstr (moo_uint8_t byte, moo_bch_t* buf, moo_oow_t size, int flagged_radix, moo_bch_t fill)
|
||||
moo_oow_t moo_byte_to_ucstr (moo_oob_t byte, moo_uch_t* buf, moo_oow_t size, int flagged_radix, moo_uch_t fill)
|
||||
{
|
||||
moo_bch_t tmp[(MOO_SIZEOF(moo_uint8_t) * MOO_BITS_PER_BYTE)];
|
||||
moo_uch_t tmp[(MOO_SIZEOF(moo_oob_t) * MOO_BITS_PER_BYTE)];
|
||||
moo_uch_t* p = tmp, * bp = buf, * be = buf + size - 1;
|
||||
int radix;
|
||||
moo_uch_t radix_char;
|
||||
|
||||
radix = (flagged_radix & MOO_BYTE_TO_UCSTR_RADIXMASK);
|
||||
radix_char = (flagged_radix & MOO_BYTE_TO_UCSTR_LOWERCASE)? 'a': 'A';
|
||||
if (radix < 2 || radix > 36 || size <= 0) return 0;
|
||||
|
||||
do
|
||||
{
|
||||
moo_oob_t digit = byte % radix;
|
||||
if (digit < 10) *p++ = digit + '0';
|
||||
else *p++ = digit + radix_char - 10;
|
||||
byte /= radix;
|
||||
}
|
||||
while (byte > 0);
|
||||
|
||||
if (fill != '\0')
|
||||
{
|
||||
while (size - 1 > p - tmp)
|
||||
{
|
||||
*bp++ = fill;
|
||||
size--;
|
||||
}
|
||||
}
|
||||
|
||||
while (p > tmp && bp < be) *bp++ = *--p;
|
||||
*bp = '\0';
|
||||
return bp - buf;
|
||||
}
|
||||
|
||||
moo_oow_t moo_byte_to_bcstr (moo_oob_t byte, moo_bch_t* buf, moo_oow_t size, int flagged_radix, moo_bch_t fill)
|
||||
{
|
||||
moo_bch_t tmp[(MOO_SIZEOF(moo_oob_t) * MOO_BITS_PER_BYTE)];
|
||||
moo_bch_t* p = tmp, * bp = buf, * be = buf + size - 1;
|
||||
int radix;
|
||||
moo_bch_t radix_char;
|
||||
@ -503,7 +537,7 @@ moo_oow_t moo_byte_to_bcstr (moo_uint8_t byte, moo_bch_t* buf, moo_oow_t size, i
|
||||
|
||||
do
|
||||
{
|
||||
moo_uint8_t digit = byte % radix;
|
||||
moo_oob_t digit = byte % radix;
|
||||
if (digit < 10) *p++ = digit + '0';
|
||||
else *p++ = digit + radix_char - 10;
|
||||
byte /= radix;
|
||||
|
Loading…
Reference in New Issue
Block a user