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
}