2015-09-23 3 views
3

Возможно, это глупый вопрос, но если у меня есть некоторые произвольные двоичные данные, могу ли я передать его в строку и обратно в массив байтов, не повреждая его?Безопасно ли выставлять бинарные данные из массива байтов в строку и обратно в golang?

Действительно ли []byte(string(byte_array)) всегда совпадает с byte_array?

+3

Отказывает память на копиях, поэтому GC ускоряется раньше, но при условии, что вы фактически не исчерпаете системную RAM, скопировав что-то размером всей вашей свободной RAM или аналогичной, да, результат будет байтовым. – twotwotwo

+6

[Это сообщение в блоге] (https://blog.golang.org/strings) может быть полезно и, в частности, отмечает, что строки могут содержать не только текст UTF-8. – twotwotwo

ответ

3

Выражение [] byte (string (byte_slice)) оценивается как срез с той же длиной и содержимым, что и byte_slice. Емкость двух срезов может быть разной.

Хотя некоторые функции языка предполагают, что строки содержат допустимый текст в кодировке UTF-8, строка может содержать произвольные байты.

Смежные вопросы