Yes, but the problem I had was rooted in: julia> convert(UTF8String, Uint8[0x41,0x42, 128]) ERROR: invalid UTF-8 sequence in convert at utf8.jl:155
/Robert Den tisdagen den 11:e mars 2014 kl. 16:21:00 UTC+1 skrev andrew cooke: > > > actually, it seems convert works both ways. > > julia> convert(UTF8String, [0x41,0x42]) > "AB" > > > > On Tuesday, 11 March 2014 12:10:53 UTC-3, andrew cooke wrote: >> >> >> do these not do what you need (or form the basis for it)? >> >> julia> convert(Vector{Uint8}, utf8("hello world")) >> 11-element Array{Uint8,1}: >> 0x68 >> 0x65 >> 0x6c >> 0x6c >> 0x6f >> 0x20 >> 0x77 >> 0x6f >> 0x72 >> 0x6c >> 0x64 >> >> julia> bytestring(convert(Vector{Uint8}, utf8("hello world"))) >> "hello world" >> >> >> On Tuesday, 11 March 2014 07:37:35 UTC-3, Robert Feldt wrote: >>> >>> Implementing simple RSA crypto in pure Julia (not for actual >>> sec-sensitive use) but for low-sec applications. But I have troubles with >>> encoding strings as integers and back. The PKCS#1 crypto standard says that >>> strings should be seen as 8-bit (octet) strings. I tried creating a Uint8[] >>> with the byte values and converting to ASCIIString but that fails when the >>> values are more than 7 bits. However, I cannot just convert to UTF8String >>> instead since those might not be valid either. >>> >>> Ideas for how to do this cleanly? Current code below... Thanks! >>> >>> # Convert a non-negative integer i into an octet string. >>> function i2osp(x::Integer, len = nothing) >>> if typeof(len) <: Integer && (x >= 256^len) >>> throw("integer is too large") >>> end >>> >>> if x < 0 >>> throw("integer is negative") >>> end >>> >>> bytes = Uint8[] >>> while x > 0 >>> b = uint8(x & 0xff) >>> push!(bytes, b) >>> x = x >>> 8 >>> end >>> str = convert(ASCIIString, reverse(bytes)) # Fails if any byte value > >>> 127 >>> >>> if typeof(len) <: Integer && (length(str) < len) >>> str = repeat("\0", len - str) * str >>> end >>> >>> return str >>> end >>> >>>