display_int radices
This commit is contained in:
parent
bcfaf89ed0
commit
b35b430047
|
@ -4,32 +4,57 @@ length := fn(ptr: ^u8): uint {
|
|||
return len
|
||||
}
|
||||
|
||||
// WTFFF is wrong with display_int
|
||||
display_int := fn(num: int, p: ^u8): ^u8 {
|
||||
display_int := fn(num: int, p: ^u8, radix: int): ^u8 {
|
||||
ptr := p
|
||||
negative := num < 0
|
||||
if negative {
|
||||
num = -num
|
||||
}
|
||||
|
||||
if radix == 2 {
|
||||
*ptr = 48
|
||||
ptr += 1;
|
||||
*ptr = 98
|
||||
ptr += 1
|
||||
} else if radix == 16 {
|
||||
*ptr = 48
|
||||
ptr += 1;
|
||||
*ptr = 120
|
||||
ptr += 1
|
||||
} else if radix == 8 {
|
||||
*ptr = 48
|
||||
ptr += 1;
|
||||
*ptr = 111
|
||||
ptr += 1
|
||||
}
|
||||
digits_start := ptr
|
||||
if num == 0 {
|
||||
*ptr = 48
|
||||
ptr += 1
|
||||
} else {
|
||||
loop if num == 0 break else {
|
||||
*ptr = num % 10 + 48
|
||||
digit := num % radix
|
||||
if digit < 10 {
|
||||
*ptr = digit + 48
|
||||
} else {
|
||||
*ptr = digit + 55
|
||||
}
|
||||
ptr += 1
|
||||
num /= 10
|
||||
num /= radix
|
||||
}
|
||||
}
|
||||
|
||||
if negative {
|
||||
*ptr = 45
|
||||
ptr += 1
|
||||
};
|
||||
|
||||
*ptr = 0
|
||||
@inline(reverse, p)
|
||||
|
||||
@inline(reverse, digits_start)
|
||||
|
||||
return p
|
||||
}
|
||||
|
||||
reverse := fn(s: ^u8): void {
|
||||
len := @inline(length, s)
|
||||
i := 0
|
||||
|
|
|
@ -12,7 +12,7 @@ main := fn(): int {
|
|||
buf := "\0\0\0\0"
|
||||
x := 0
|
||||
loop if x == 255 break else {
|
||||
log.info(string.display_int(x, buf))
|
||||
log.info(string.display_int(x, buf, 10))
|
||||
x += 1
|
||||
}
|
||||
return 0
|
||||
|
|
Loading…
Reference in a new issue