Golang: Как преобразовать строку в двоичное представление

В golang, как я могу преобразовать строку в двоичную строку? Пример: "CC" становится 10000111000011

3 ответа

Решение

Это простой способ сделать это:

func stringToBin(s string) (binString string) {
    for _, c := range s {
        binString = fmt.Sprintf("%s%b",binString, c)
    }
    return 
}

Поскольку я включил в комментарий к другому ответу, вы также можете использовать вариант "%s%.8b" которая будет дополнять строку начальными нулями, если вам нужно или вы хотите представить 8 бит... это, однако, не будет иметь никакого значения, если вашему символу требуется больше 8 бит для представления, например, греческие символы:

Φ 1110100110

λ 1110111011

μ 1110111100

Или эти математические символы печатают 14 бит:

01 10001001100000

01 10001010000010

01 10001011000101

Так что будьте внимательны: приведенный здесь пример подразумевает простую демонстрацию, которая соответствует критериям в исходной публикации, а не надежное средство для работы с представлениями base2 кодовых точек Unicode.

Во-первых, двоичное представление "CC" - это "0100001101000011", вы должны позаботиться о начале 0, иначе ваша строка может быть получена разными способами.

func binary(s string) string {
    res := ""
    for _, c := range s {
        res = fmt.Sprintf("%s%.8b", res, c)
    }
    return res
}

Это приводит к желаемому выводу: `binary("CC") = "0100001101000011".

Другой подход

func strToBinary(s string, base int) []byte {

    var b []byte

    for _, c := range s {
        b = strconv.AppendInt(b, int64(c), base)
    }

    return b
}
Другие вопросы по тегам