Преобразование типов. Golang
Я хочу преобразовать byte в int, но не привычным способом. Если использовать функцию int
int(0x30)
Мы получим результат 48. Мне нужно получить 30. Ввели 0x10 получили 10. Ввели 0x11 получили 11 и т.д. Как это сделать?
Ответы (3 шт):
Автор решения: gil9red
→ Ссылка
Если высчитывать на ходу, то можно попробовать так:
- Получить
hexкак строку - Перевести строку
hexкак число
Пример:
package main
import (
"fmt"
"strconv"
)
func main() {
bytes := []byte{0x10, 0x30, 0x00}
fmt.Println(bytes)
// [16 48 0]
numbers := make([]int, len(bytes))
for i := 0; i < len(bytes); i++ {
hex_str := fmt.Sprintf("%X", bytes[i])
num, _ := strconv.Atoi(hex_str)
numbers[i] = num
}
fmt.Println(numbers)
// [10 30 0]
}
Автор решения: young_protokaa42
→ Ссылка
Нашёл подходящее решение:
strconv.ParseFloat(strconv.FormatInt(int64(0x30), 16), 16)
Автор решения: Alexander Pavlov
→ Ссылка
int hex = int(0x30)
int d1 = hex / 16
int d2 = hex % 16
if d1 > 9 || d2 > 9 {
// panic
...
}
int decimal = d1*10 + d2