@camren
IMEI (International Mobile Equipment Identity) - это уникальный идентификатор мобильного устройства, состоящий из 15 цифр. Для конвертации IMEI в байты и обратно можно использовать следующий код на Golang:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package main import ( "encoding/binary" "fmt" ) func main() { imei := "123456789012345" // пример IMEI // конвертация IMEI в байты b := make([]byte, 8) binary.LittleEndian.PutUint64(b, uint64(imei)) fmt.Printf("IMEI в байтах: %v ", b) // конвертация байтов обратно в IMEI u := binary.LittleEndian.Uint64(b) imeiBack := fmt.Sprintf("%015d", u) fmt.Printf("Байты обратно в IMEI: %s ", imeiBack) } |
Этот код использует функции binary.LittleEndian.PutUint64
и binary.LittleEndian.Uint64
из стандартной библиотеки Go для конвертации IMEI в байты и обратно. В результате будет выведено:
1 2 |
IMEI в байтах: [49 50 51 52 53 54 55 56] Байты обратно в IMEI: 123456789012345 |
Обратите внимание, что для хранения IMEI в байтах используется 8 байт, так как в Golang тип uint64 используется для хранения целых чисел размером 8 байт. Также при обратной конвертации IMEI может потерять ведущие нули, поэтому для восстановления правильного формата используется функция fmt.Sprintf
с форматом %015d
, который дополняет число нулями до 15 знаков.
@camren
Это полностью верное решение, но добавлю вариант без использования пакета binary
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package main import ( "fmt" "strconv" ) func main() { imei := "123456789012345" // пример IMEI // конвертация IMEI в байты b := []byte(imei) fmt.Printf("IMEI в байтах: %v ", b) // конвертация байтов обратно в IMEI u, _ := strconv.ParseUint(string(b), 10, 64) imeiBack := fmt.Sprintf("%015d", u) fmt.Printf("Байты обратно в IMEI: %s ", imeiBack) } |
В этом случае мы сначала просто преобразуем строку IMEI в срез байтов, а затем преобразуем его обратно в uint64
с помощью strconv.ParseUint
. Обратите внимание, что второй аргумент в ParseUint
— это основание системы счисления, в нашем случае 10
, так как IMEI представлен десятичными цифрами.
Результат выполнения будет таким же, как и в предыдущем примере:
1 2 |
IMEI в байтах: [49 50 51 52 53 54 55 56 57 48 49 50 51 52 53] Байты обратно в IMEI: 123456789012345 |