Well the thing is to En/Decode this string into a string, or En/Decode 
this string into byte[]...

I'm adding methods

                public static byte[] ToZ85EncodedBytes(this string decoded)
                {
                        return EncodeBytes(decoded, ZContext.Encoding);
                }

                public static byte[] ToZ85EncodedBytes(this string decoded, 
Encoding encoding)
                {
                        return EncodeBytes(decoded, encoding);
                }

                public static byte[] ToZ85DecodedBytes(this string encoded)
                {
                        return DecodeBytes(encoded, ZContext.Encoding);
                }

                public static byte[] ToZ85DecodedBytes(this string encoded, 
Encoding encoding)
                {
                        return DecodeBytes(encoded, encoding);
                }

and finally also

                public static byte[] EncodeBytes(string strg, Encoding encoding)
                {
                        byte[] bytes = encoding.GetBytes(strg);
                        return Encode(bytes);
                }

                public static byte[] DecodeBytes(string strg, Encoding encoding)
                {
                        byte[] bytes = encoding.GetBytes(strg);
                        return Decode(bytes);
                }


to have the byte[] and string thing correctly...

Gruß, Uli

Am 28.07.2015 um 16:24 schrieb Robert Pickering:
> Finally got to the bottom of this. It seems when you try and decode a
> Z80 encode key, represented using .NET's native string, class, the
> decode function decodes string to a byte array correctly, it then
> re-encodes these bytes as a string:
>
>               public static string Decode(string strg)
>               {
>                       return Decode(strg, ZContext.Encoding);
>               }
>
>               public static string Decode(string strg, Encoding
>               encoding)
>               {
>                       byte[] bytes = encoding.GetBytes(strg);
>                       byte[] encoded = Decode(bytes);
>                       return encoding.GetString(encoded);
>               }
>
> This recoding always seems to corrupt the key in some way. The default
> encoding is UTF8, so presumably because the data is random this means
> some invalid byte sequences are generated. (Originally I was trying to
> decode the string as ASCII, which would mean any bytes > 128 would
> become corrupted, but even when I try decoding with UTF8, the key often
> still gets corrupted).
>
> I have changed all return types for decode methods in the clrzmq4
> library to return a byte array. The example now works as expected once
> this change is in place. I'll send a pull request over with the change.
>
> Rob


_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to