Beispiel #1
0
char *utoa_drop_trailing_0(char *buf, Uint_ n_, unsigned &n_skipped) {
  typedef typename signed_for_int<Uint_>::unsigned_t Uint;
  Uint n=n_;
  n_skipped=0;
  if (!n) {
    *--buf='0';
    return buf;
  } else {
    Uint rem;
    while (n) {
      NDIV10MOD(rem, n);
      if (rem) {
        *--buf = digit_to_char(rem);
        // some non-0 trailing digits; now output all digits.
        while (n) {
          NDIV10MOD(rem, n);
          *--buf = digit_to_char(rem);
        }
        return buf;
      }
      ++n_skipped;
    }
    assert(0);
    return 0;
  }
}
Beispiel #2
0
static void print_val (reg_t val)
	{
	reg_t mask;
	byte_t start;
	byte_t pos;
	byte_t shift;
	digit_t d;

	mask = 0xF000;
	shift = 12;
	start = 0;

	for (pos = 0; pos < 4; pos++)
		{
		d = (val & mask) >> shift;
		if (d || start || pos == 3)
			{
			start = 1;
			print_char (digit_to_char (d));
			}

		shift -= 4;
		mask >>= 4;
		}

	print_char (13);  // carriage return
	print_char (10);  // new line
	}
Beispiel #3
0
static void print_stat (err_t err)
	{
	print_char ('S');
	print_char (digit_to_char (err & 0xF));
	print_char (13);  // carriage return
	print_char (10);  // new line
	}
Beispiel #4
0
char				*ft_itoa(int n)
{
	long	big_n;
	char	*r;
	char	*it;

	big_n = n;
	if (big_n == 0)
		r = "0";
	else
	{
		r = malloc(nb_chars(big_n) + 1);
		if (r)
		{
			it = r + nb_chars(big_n);
			apply_sign(&big_n, r);
			*it-- = '\0';
			while (big_n)
			{
				*it-- = digit_to_char(big_n % 10);
				big_n /= 10;
			}
		}
	}
	return (r);
}
Beispiel #5
0
char		*ft_itoa_base(int value, int base)
{
	int		negative;
	char	*str;
	int		length;
	int		value2;

	if (value == -2147483648)
		return ("-2147483648");
	negative = value < 0 && base == 10;
	value = value < 0 ? value * -1 : value;
	length = 1;
	value2 = value;
	while (value2 >= base)
	{
		value2 /= base;
		length++;
	}
	str = (char*)malloc(sizeof(char) * ((length += negative) + 1));
	str[0] = '-';
	str[length] = '\0';
	while (length-- > negative)
	{
		str[length] = digit_to_char(value % base);
		value /= base;
	}
	return (str);
}
Beispiel #6
0
char *utoa(char *buf, Int n_) {
  typedef typename signed_for_int<Int>::unsigned_t Uint;
  Uint n=n_;
  if (!n) {
    *--buf='0';
  } else {
    Uint rem;
    // 3digit lookup table, divide by 1000 faster?
    while (n) {
      NDIV10MOD(rem, n);
      *--buf = digit_to_char(rem);
    }
  }
  return buf;
}
Beispiel #7
0
void		ft_putnbr_fd(int n, int fd)
{
	if (n == -2147483648)
		ft_putstr_fd("-2147483648", fd);
	else if (n < 0)
	{
		ft_putchar_fd('-', fd);
		ft_putnbr_fd(n * -1, fd);
	}
	else
	{
		if (n / 10 != 0)
		{
			ft_putnbr_fd(n / 10, fd);
		}
		ft_putchar_fd(digit_to_char(n % 10), fd);
	}
}
Beispiel #8
0
void uint_to_str(size_t value, size_t base, char* buf) {
	if(value == 0) {
		string_copy(buf, "0", 1);
		return;
	}
	
	//To do: adjust size?
	//TODO: make independent of word size!
	char buf2[16];
	
	size_t len = 0;
	while(value > 0) {
		UintDivMod div = uintDivMod(value, base);
		buf2[len] = digit_to_char(div.remainder);
		++len;
		value = div.quotient;
	}
	
	for(size_t i = 0; i < len; ++i) {
		buf[i] = buf2[len - 1 - i];
	}
	buf[len] = '\0';
}