julia> String(UInt8.([125, 119, 48, 126, 40]))
"}w0~("
Пояснение
в Julia Строки строятся с использованием набора байтов.Если вы используете ASCII, то простое сопоставление байтов является простым, и вы можете напрямую работать с необработанными данными (что также является самым быстрым способом сделать это).
Обратите внимание, что поскольку строки Julia являются неизменяемыми, при создании строки из необработанных байтов начальные байты становятся недоступными - это также означает, что в процессе создания String
данные не копируются.Посмотрите на приведенный ниже пример:
julia> mybytes = UInt8.([125, 119, 48, 126, 40]);
julia> mystring = String(mybytes)
"}w0~("
julia> mybytes
0-element Array{UInt8,1}
Замечание по производительности
String
с в Юлии не усвоены.В аналитических сценариях всегда рассматривайте возможность использования Symbol
с вместо String
с.В некоторых сценариях использование temperature=:hot
вместо temperature="hot"
может означать в 3 раза более короткое время выполнения.
EDIT - тест производительности
julia> using Random, BenchmarkTools;Random.seed!(0);
bb = rand(33:126,1000);
julia> @btime join(Char.($bb));
31.573 μs (13 allocations: 6.56 KiB)
julia> @btime String(UInt8.($bb));
711.111 ns (2 allocations: 2.13 KiB)
String(UInt8.($bb))
более чем в 40 раз быстрее и использует 1/3памяти