Thanks Andrew,
That is exactly the kind of obvious-in-retrospect type of solution I was
hoping for. I can adapt this to my needs.
Cheers,
Robert
Den tisdagen den 11:e mars 2014 kl. 16:10:53 UTC+1 skrev andrew cooke:
>
>
> 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
>>
>>