Skip to content

Instantly share code, notes, and snippets.

View vkorbes's full-sized avatar

V Körbes vkorbes

View GitHub Profile
@vkorbes
vkorbes / utf8_01.go
Last active February 16, 2018 11:41
x := “I’m so hungry right now.”
for i := 0; i < len(x); i++ {
fmt.Printf(“%-3v → %4d → %08b\n”, string(x[i]), x[i], x[i])
}
@vkorbes
vkorbes / utf8_02.go
Last active February 16, 2018 11:41
x := “Ó o auê aí, ô!” // Perfectly valid Portuguese. (Not really.)
for i := 0; i < len(x); i++ {
fmt.Printf(“%-3v → %4d → %8b\n”, string(x[i]), x[i], x[i])
}
@vkorbes
vkorbes / utf83.go
Last active February 16, 2018 11:41
s := “Ó o auê aí, ô!”
for len(s) > 0 {
char, size := utf8.DecodeRune([]byte(s))
fmt.Printf(“%-2c → %3d → Size: %1v byte(s).\n”, char, char, size)
s = s[size:]
}
@vkorbes
vkorbes / utf8_4.go
Last active February 16, 2018 11:41
// a + ~ = ã, right?
ã := []byte{97, 126}
fmt.Println(string(ã))
// And can we spot a pattern of repeating separators?
x := “Ó o auê aí, ô!”
for _, v := range x {
fmt.Printf(“%v “, v)
}
@vkorbes
vkorbes / utf8_5.go
Last active February 16, 2018 11:41
x := “aã香🤔”
for i := 0; i < len(x); i++ {
fmt.Printf(“%08b “, x[i])
}
a, _ := strconv.ParseInt(“00011100011”, 2, 64)
b, _ := strconv.ParseInt(“1001100110011001”, 2, 64)
c, _ := strconv.ParseInt(“000011111100100010100”, 2, 64)
fmt.Printf(“%x %x %x”, a, b, c)
I → 73 → 01001001
‘ → 39 → 00100111
m → 109 → 01101101
→ 32 → 00100000
s → 115 → 01110011
o → 111 → 01101111
→ 32 → 00100000
h → 104 → 01101000
u → 117 → 01110101
[…]
à → 195 → 11000011
“ → 147 → 10010011
→ 32 → 00100000
o → 111 → 01101111
→ 32 → 00100000
a → 97 → 01100001
u → 117 → 01110101
à → 195 → 11000011
ª → 170 → 10101010
[…]
Ó → 211 → Size: 2 byte(s).
[…]
ê → 234 → Size: 2 byte(s).
[…]
í → 237 → Size: 2 byte(s).
[…]
ô → 244 → Size: 2 byte(s).
[…]
a~
211 32 111 32 97 117 234 32 97 237 44 32 244 33