no problem. don't forget the padding!
On Tuesday, 11 March 2014 12:16:44 UTC-3, Robert Feldt wrote:
>
> 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
>>>
>>>