builtin: make byte.hex() two digits format (#5886)
parent
4f37202b72
commit
055117dc5f
|
@ -268,35 +268,53 @@ pub fn (n int) hex1() string {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pub fn (nn byte) hex() string {
|
[inline]
|
||||||
if nn == 0 {
|
fn u64_to_hex(nn u64, len byte) string {
|
||||||
return '0'
|
|
||||||
}
|
|
||||||
|
|
||||||
mut n := nn
|
mut n := nn
|
||||||
max := 2
|
mut buf := [256]byte
|
||||||
mut buf := malloc(max + 1)
|
buf[len] = `\0`
|
||||||
|
mut i := 0
|
||||||
mut index := max
|
for i=len-1; i>=0; i-- {
|
||||||
unsafe {
|
d := byte(n & 0xF)
|
||||||
buf[index--] = `\0`
|
x := if d < 10 { d + `0` } else { d + 87 }
|
||||||
}
|
buf[i] = x
|
||||||
for n > 0 {
|
|
||||||
d := n & 0xF
|
|
||||||
n = n >> 4
|
n = n >> 4
|
||||||
unsafe {
|
}
|
||||||
buf[index--] = if d < 10 { d + `0` } else { d + 87 }
|
return string{
|
||||||
|
str: memdup(buf, len + 1)
|
||||||
|
len: len
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[inline]
|
||||||
|
fn u64_to_hex_no_leading_zeros(nn u64, len byte) string {
|
||||||
|
mut n := nn
|
||||||
|
mut buf := [256]byte
|
||||||
|
buf[len] = `\0`
|
||||||
|
mut i := 0
|
||||||
|
for i=len-1; i>=0; i-- {
|
||||||
|
d := byte(n & 0xF)
|
||||||
|
x := if d < 10 { d + `0` } else { d + 87 }
|
||||||
|
buf[i] = x
|
||||||
|
n = n >> 4
|
||||||
|
if n == 0 {
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//buf[index--] = `x`
|
res_len := len - i
|
||||||
//buf[index] = `0`
|
return string{
|
||||||
index++
|
str: memdup(&buf[i], res_len + 1)
|
||||||
|
len: res_len
|
||||||
unsafe {
|
|
||||||
return tos(buf + index, (max - index))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn (nn byte) hex() string {
|
||||||
|
if nn == 0 {
|
||||||
|
return '00'
|
||||||
|
}
|
||||||
|
return u64_to_hex(nn, 2)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn (nn i8) hex() string {
|
pub fn (nn i8) hex() string {
|
||||||
return byte(nn).hex()
|
return byte(nn).hex()
|
||||||
}
|
}
|
||||||
|
@ -305,29 +323,7 @@ pub fn (nn u16) hex() string {
|
||||||
if nn == 0 {
|
if nn == 0 {
|
||||||
return '0'
|
return '0'
|
||||||
}
|
}
|
||||||
|
return u64_to_hex_no_leading_zeros(nn, 4)
|
||||||
mut n := nn
|
|
||||||
max := 5
|
|
||||||
mut buf := malloc(max + 1)
|
|
||||||
|
|
||||||
mut index := max
|
|
||||||
unsafe {
|
|
||||||
buf[index--] = `\0`
|
|
||||||
}
|
|
||||||
for n > 0 {
|
|
||||||
d := byte(n & 0xF)
|
|
||||||
n = n >> 4
|
|
||||||
unsafe {
|
|
||||||
buf[index--] = if d < 10 { d + `0` } else { d + 87 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//buf[index--] = `x`
|
|
||||||
//buf[index] = `0`
|
|
||||||
index++
|
|
||||||
|
|
||||||
unsafe {
|
|
||||||
return tos(buf + index, (max - index))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (nn i16) hex() string {
|
pub fn (nn i16) hex() string {
|
||||||
|
@ -338,29 +334,7 @@ pub fn (nn u32) hex() string {
|
||||||
if nn == 0 {
|
if nn == 0 {
|
||||||
return '0'
|
return '0'
|
||||||
}
|
}
|
||||||
|
return u64_to_hex_no_leading_zeros(nn, 8)
|
||||||
mut n := nn
|
|
||||||
max := 10
|
|
||||||
mut buf := malloc(max + 1)
|
|
||||||
|
|
||||||
mut index := max
|
|
||||||
unsafe {
|
|
||||||
buf[index--] = `\0`
|
|
||||||
}
|
|
||||||
for n > 0 {
|
|
||||||
d := byte(n & 0xF)
|
|
||||||
n = n >> 4
|
|
||||||
unsafe {
|
|
||||||
buf[index--] = if d < 10 { d + `0` } else { d + 87 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//buf[index--] = `x`
|
|
||||||
//buf[index] = `0`
|
|
||||||
index++
|
|
||||||
|
|
||||||
unsafe {
|
|
||||||
return tos(buf + index, (max - index))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (nn int) hex() string {
|
pub fn (nn int) hex() string {
|
||||||
|
@ -375,31 +349,7 @@ pub fn (nn u64) hex() string {
|
||||||
if nn == 0 {
|
if nn == 0 {
|
||||||
return '0'
|
return '0'
|
||||||
}
|
}
|
||||||
|
return u64_to_hex_no_leading_zeros(nn, 16)
|
||||||
mut n := nn
|
|
||||||
max := 18
|
|
||||||
mut buf := malloc(max + 1)
|
|
||||||
|
|
||||||
mut index := max
|
|
||||||
unsafe {
|
|
||||||
buf[index--] = `\0`
|
|
||||||
}
|
|
||||||
for n > 0 {
|
|
||||||
d := byte(n & 0xF)
|
|
||||||
n = n >> 4
|
|
||||||
unsafe {
|
|
||||||
buf[index--] = if d < 10 { d + `0` } else { d + 87 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//buf[index--] = `x`
|
|
||||||
//buf[index] = `0`
|
|
||||||
index++
|
|
||||||
|
|
||||||
unsafe {
|
|
||||||
C.memmove(buf,buf+index, (max-index)+1 )
|
|
||||||
return tos(buf, (max-index))
|
|
||||||
}
|
|
||||||
//return tos(buf + index, (max-index))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (nn i64) hex() string {
|
pub fn (nn i64) hex() string {
|
||||||
|
|
|
@ -196,9 +196,9 @@ fn test_int_to_hex() {
|
||||||
// --- int to hex tests
|
// --- int to hex tests
|
||||||
c0 := 12
|
c0 := 12
|
||||||
// 8Bit
|
// 8Bit
|
||||||
assert byte(0).hex() == '0'
|
assert byte(0).hex() == '00'
|
||||||
assert byte(c0).hex() == 'c'
|
assert byte(c0).hex() == '0c'
|
||||||
assert i8(c0).hex() == 'c'
|
assert i8(c0).hex() == '0c'
|
||||||
assert byte(127).hex() == '7f'
|
assert byte(127).hex() == '7f'
|
||||||
assert i8(127).hex() == '7f'
|
assert i8(127).hex() == '7f'
|
||||||
assert byte(255).hex() == 'ff'
|
assert byte(255).hex() == 'ff'
|
||||||
|
|
Loading…
Reference in New Issue