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