Impementation-dependent casts from uchar to char
Jaroslaw Staniek
staniek at kde.org
Wed Jan 2 22:50:34 GMT 2013
On 2 January 2013 22:52, Marijn Kruisselbrink <mkruisselbrink at kde.org> wrote:
> On Wed, Jan 2, 2013 at 1:26 PM, Jaroslaw Staniek <staniek at kde.org> wrote:
>>
>> Hello Marijn,
>> There are impementation-dependent casts from uchar to char:
>
> Ah yes, that is indeed not good.
>
>> Since this is your code, could you point me what are these values?
>
> I assume I copied these values from whatever document documents the
> encryption ms office uses... Not sure what the nicest way is to hardcode
> binary data in c++ source code... "\xfe\xa7\xd2\x76\x3b\x4b\x9e\x79" might
> work, but has the downside that there is a trailing 0 byte that should not
> be included in the qbytearray. Signed char constants seem ugly, since
> QByteArray expects regular char, not signed char (although I guess it would
> be safe, since the signed->unsigned underflowing conversion is defined
> unlike this unsigned->signed overflow).
It's implementaton defined: http://c0x.coding-guidelines.com/6.4.4.4.html#891
How about this, similarly safe only when sizeof(char)==1 but warnings disappear:
- const char blockKeyData1[] = {0xfe, 0xa7, 0xd2, 0x76,
0x3b, 0x4b, 0x9e, 0x79};
- QByteArray blockKey1(blockKeyData1, sizeof(blockKeyData1));
+ const char blockKeyData1[] = "\xfe\xa7\xd2\x76\x3b\x4b\x9e\x79";
+ QByteArray blockKey1(blockKeyData1, sizeof(blockKeyData1)
- sizeof(char));
--
regards / pozdrawiam, Jaroslaw Staniek
Kexi & Calligra & KDE | http://calligra.org/kexi | http://kde.org
Qt Certified Specialist | http://qt-project.org
http://www.linkedin.com/in/jstaniek
More information about the calligra-devel
mailing list