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