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
>>>
>>>

Reply via email to