mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-03 22:28:46 +00:00
Fix the way '%32b' and other prefixed numbers are written.
This commit is contained in:
+58
-11
@@ -994,6 +994,33 @@ _fmt_int :: proc(fi: ^Info, u: u64, base: int, is_signed: bool, bit_size: int, d
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buf: [256]byte
|
||||||
|
start := 0
|
||||||
|
|
||||||
|
if fi.hash && !is_signed {
|
||||||
|
switch base {
|
||||||
|
case 2:
|
||||||
|
io.write_byte(fi.writer, '0', &fi.n)
|
||||||
|
io.write_byte(fi.writer, 'b', &fi.n)
|
||||||
|
start = 2
|
||||||
|
|
||||||
|
case 8:
|
||||||
|
io.write_byte(fi.writer, '0', &fi.n)
|
||||||
|
io.write_byte(fi.writer, 'o', &fi.n)
|
||||||
|
start = 2
|
||||||
|
|
||||||
|
case 12:
|
||||||
|
io.write_byte(fi.writer, '0', &fi.n)
|
||||||
|
io.write_byte(fi.writer, 'o', &fi.n)
|
||||||
|
start = 2
|
||||||
|
|
||||||
|
case 16:
|
||||||
|
io.write_byte(fi.writer, '0', &fi.n)
|
||||||
|
io.write_byte(fi.writer, 'x', &fi.n)
|
||||||
|
start = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
prec := 0
|
prec := 0
|
||||||
if fi.prec_set {
|
if fi.prec_set {
|
||||||
prec = fi.prec
|
prec = fi.prec
|
||||||
@@ -1019,14 +1046,10 @@ _fmt_int :: proc(fi: ^Info, u: u64, base: int, is_signed: bool, bit_size: int, d
|
|||||||
panic("_fmt_int: unknown base, whoops")
|
panic("_fmt_int: unknown base, whoops")
|
||||||
}
|
}
|
||||||
|
|
||||||
buf: [256]byte
|
|
||||||
start := 0
|
|
||||||
|
|
||||||
flags: strconv.Int_Flags
|
flags: strconv.Int_Flags
|
||||||
if fi.hash { flags |= {.Prefix} }
|
if fi.hash && !fi.zero && start == 0 { flags |= {.Prefix} }
|
||||||
if fi.plus { flags |= {.Plus} }
|
if fi.plus { flags |= {.Plus} }
|
||||||
s := strconv.append_bits(buf[start:], u, base, is_signed, bit_size, digits, flags)
|
s := strconv.append_bits(buf[start:], u, base, is_signed, bit_size, digits, flags)
|
||||||
|
|
||||||
prev_zero := fi.zero
|
prev_zero := fi.zero
|
||||||
defer fi.zero = prev_zero
|
defer fi.zero = prev_zero
|
||||||
fi.zero = false
|
fi.zero = false
|
||||||
@@ -1056,6 +1079,33 @@ _fmt_int_128 :: proc(fi: ^Info, u: u128, base: int, is_signed: bool, bit_size: i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buf: [256]byte
|
||||||
|
start := 0
|
||||||
|
|
||||||
|
if fi.hash && !is_signed {
|
||||||
|
switch base {
|
||||||
|
case 2:
|
||||||
|
io.write_byte(fi.writer, '0', &fi.n)
|
||||||
|
io.write_byte(fi.writer, 'b', &fi.n)
|
||||||
|
start = 2
|
||||||
|
|
||||||
|
case 8:
|
||||||
|
io.write_byte(fi.writer, '0', &fi.n)
|
||||||
|
io.write_byte(fi.writer, 'o', &fi.n)
|
||||||
|
start = 2
|
||||||
|
|
||||||
|
case 12:
|
||||||
|
io.write_byte(fi.writer, '0', &fi.n)
|
||||||
|
io.write_byte(fi.writer, 'o', &fi.n)
|
||||||
|
start = 2
|
||||||
|
|
||||||
|
case 16:
|
||||||
|
io.write_byte(fi.writer, '0', &fi.n)
|
||||||
|
io.write_byte(fi.writer, 'x', &fi.n)
|
||||||
|
start = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
prec := 0
|
prec := 0
|
||||||
if fi.prec_set {
|
if fi.prec_set {
|
||||||
prec = fi.prec
|
prec = fi.prec
|
||||||
@@ -1081,12 +1131,9 @@ _fmt_int_128 :: proc(fi: ^Info, u: u128, base: int, is_signed: bool, bit_size: i
|
|||||||
panic("_fmt_int: unknown base, whoops")
|
panic("_fmt_int: unknown base, whoops")
|
||||||
}
|
}
|
||||||
|
|
||||||
buf: [256]byte
|
|
||||||
start := 0
|
|
||||||
|
|
||||||
flags: strconv.Int_Flags
|
flags: strconv.Int_Flags
|
||||||
if fi.hash && !fi.zero { flags |= {.Prefix} }
|
if fi.hash && !fi.zero && start == 0 { flags |= {.Prefix} }
|
||||||
if fi.plus { flags |= {.Plus} }
|
if fi.plus { flags |= {.Plus} }
|
||||||
s := strconv.append_bits_128(buf[start:], u, base, is_signed, bit_size, digits, flags)
|
s := strconv.append_bits_128(buf[start:], u, base, is_signed, bit_size, digits, flags)
|
||||||
|
|
||||||
if fi.hash && fi.zero && fi.indent == 0 {
|
if fi.hash && fi.zero && fi.indent == 0 {
|
||||||
|
|||||||
Reference in New Issue
Block a user