@fredy
Вот примеры функций для конвертации IMEI в байты и обратно в Go:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
package main import ( "fmt" "strconv" ) // Функция для конвертации IMEI в байты func imeiToBytes(imei string) ([]byte, error) { if len(imei) != 15 { return nil, fmt.Errorf("IMEI должен состоять из 15 цифр") } bytes := make([]byte, 8) for i := 0; i < 8; i++ { n, err := strconv.Atoi(imei[i*2 : i*2+2]) if err != nil { return nil, err } bytes[i] = byte(n) } return bytes, nil } // Функция для конвертации байтов в IMEI func bytesToImei(bytes []byte) (string, error) { if len(bytes) != 8 { return "", fmt.Errorf("Байты должны состоять из 8 элементов") } imei := "" for _, b := range bytes { imei += fmt.Sprintf("%02d", b) } return imei, nil } func main() { imei := "123456789012345" // Пример конвертации IMEI в байты bytes, err := imeiToBytes(imei) if err != nil { fmt.Println(err) return } fmt.Printf("IMEI в байтах: %v ", bytes) // Пример конвертации байтов в IMEI imeiConverted, err := bytesToImei(bytes) if err != nil { fmt.Println(err) return } fmt.Printf("Байты в IMEI: %s ", imeiConverted) } |
В этом примере функция imeiToBytes
принимает строку IMEI и возвращает массив байтов, представляющий IMEI. Функция bytesToImei
принимает массив байтов и возвращает строку IMEI. Обе функции также проверяют, что входные данные имеют правильные размеры. В основной функции примера вы можете заменить значение переменной imei
на нужное вам IMEI и выполнить программу.