РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
63 of 1593 menu

Преобразование в uint16

Преобразование в тип uint16 используется для получения 16-битного беззнакового целого числа. В качестве исходного значения может выступать число другого типа, строка или логическое значение. При преобразовании важно учитывать диапазон допустимых значений: от 0 до 65535 включительно. Если исходное значение выходит за этот диапазон, происходит переполнение (обрезка старших битов).

Преобразование числовых типов

Для преобразования числовых значений используется синтаксис uint16(x), где x — исходное число. При этом происходит явное приведение типа. Рассмотрим несколько примеров:

package main import "fmt" func main() { var a int = 100 var b uint8 = 200 var c float32 = 3.14 res1 := uint16(a) res2 := uint16(b) res3 := uint16(c) fmt.Println(res1) fmt.Println(res2) fmt.Println(res3) }

Результат выполнения кода:

100 200 3

Как видно из примера, дробная часть отсекается при преобразовании из чисел с плавающей точкой.

Преобразование строк

Для преобразования строкового представления числа в uint16 необходимо использовать функцию strconv.ParseUint с указанием разрядности 16. Эта функция возвращает два значения: само число и ошибку. Обратите внимание, что результат имеет тип uint64, поэтому его нужно явно привести к uint16:

package main import ( "fmt" "strconv" ) func main() { str := "12345" num, err := strconv.ParseUint(str, 10, 16) if err != nil { fmt.Println("Error:", err) return } res := uint16(num) fmt.Println(res) }

Результат выполнения кода:

12345

Если строка содержит недопустимый символ или число выходит за пределы допустимого диапазона, будет возвращена ошибка:

package main import ( "fmt" "strconv" ) func main() { str := "abc" num, err := strconv.ParseUint(str, 10, 16) if err != nil { fmt.Println("Error:", err) return } res := uint16(num) fmt.Println(res) }

Результат выполнения кода:

"Error: strconv.ParseUint: parsing \"abc\": invalid syntax"

Преобразование логических значений

При преобразовании логического значения true становится 1, а false — 0. Это может быть полезно при работе с битовыми флагами:

package main import "fmt" func main() { var flag bool = true res := uint16(0) if flag { res = 1 } fmt.Println(res) }

Результат выполнения кода:

1

Особенности при переполнении

Важно помнить, что при преобразовании чисел, выходящих за пределы диапазона uint16, происходит обрезка старших битов. В отличие от строкового преобразования, ошибка не возникает, но теряется точность:

package main import "fmt" func main() { var big uint32 = 70000 res := uint16(big) fmt.Println(res) }

Результат выполнения кода:

4464

Как видно, значение 70000 было обрезано до 4464, так как максимальное значение uint16 — 65535.

Смотрите также

  • функцию to-uint,
    которая преобразует значение в беззнаковое целое
  • функцию to-uint8,
    которая преобразует значение в 8-битное беззнаковое целое
  • функцию to-uint32,
    которая преобразует значение в 32-битное беззнаковое целое
  • функцию to-uint64,
    которая преобразует значение в 64-битное беззнаковое целое
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить