Вы можете использовать unsafe_string
: unsafe_string(pointer(v))
, это делает это без копирования, поэтому очень быстро. Но решение @ laborg лучше почти во всех случаях, потому что оно безопасно. Если вы хотите и безопасность, и максимальную производительность, вы должны написать ручную функцию самостоятельно:
function get_string(v::Vector{UInt8})
# Find first zero
zeropos = 0
@inbounds for i in eachindex(v)
iszero(v[i]) && (zeropos = i; break)
end
iszero(zeropos) && error("Not null-terminated")
GC.@preserve v unsafe_string(pointer(v), zeropos - 1)
end
Но, да, каковы шансы, что ДЕЙСТВИТЕЛЬНО вам нужно, чтобы это было так быстро.