Либо rstrip
, либо replace
будет работать только в том случае, если строка дополняется до конца буфера нулями. На практике буфер, возможно, не был инициализирован нулем для начала, поэтому вы можете получить что-то вроде b'hiya\0x\0'
.
Если вы категорически на 100% знаете, что код C начинается с нулевого инициализированного буфера и никогда не использует его повторно, тогда вы можете найти rstrip
более простым, в противном случае я бы выбрал немного более грязный, но гораздо более безопасный :
>>> b'hiya\0x\0'.split(b'\0',1)[0]
b'hiya'
, который обрабатывает первый ноль как терминатор.