Yes, I see where I went wrong now. I will base64 encode the uint8 array, 
pass that around and then reverse on the other side.

Sorry for the noise,

Robert

Den tisdagen den 11:e mars 2014 kl. 16:32:50 UTC+1 skrev andrew cooke:
>
>
> well that's because it's an invalid character sequence.
>
> if it started as a valid utf8 string, you won't see that or unencoding.
>
> if it wasn't a utf8 string originally then you have an encoding issue.
>
> you implied earlier that you want to share the encoded data as a string.  
> you don't.  it's either binary, or you convert to a hex string.  not utf8.
>
> andrew
>
>
> On Tuesday, 11 March 2014 12:22:48 UTC-3, Robert Feldt wrote:
>>
>> 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