return sum;
}
+int ByteVector::toInt(bool mostSignificantByteFirst) const
+{
+ int sum = 0;
+ int last = d->data.size() > 4 ? 3 : d->data.size() - 1;
+
+ bool negative = uchar(d->data[mostSignificantByteFirst ? 0 : last]) & 0x80;
+
+ if(negative) {
+ for(int i = 0; i <= last; i++)
+ sum |= uchar(d->data[i] ^ 0xff) << ((mostSignificantByteFirst ? last - i : i) * 8);
+ sum = (sum + 1) * -1;
+ }
+ else {
+ for(int i = 0; i <= last; i++)
+ sum |= uchar(d->data[i]) << ((mostSignificantByteFirst ? last - i : i) * 8);
+ }
+
+ return sum;
+}
+
long long ByteVector::toLongLong(bool mostSignificantByteFirst) const
{
// Just do all of the bit operations on the unsigned value and use an implicit
*/
uint toUInt(bool mostSignificantByteFirst = true) const;
+ /*!
+ * Converts the first 4 bytes of the vector to an integer.
+ *
+ * If \a mostSignificantByteFirst is true this will operate left to right
+ * evaluating the integer. For example if \a mostSignificantByteFirst is
+ * true then $00 $00 $00 $01 == 0x00000001 == 1, if false, $01 00 00 00 ==
+ * 0x01000000 == 1.
+ *
+ * This will correctly adjust for the bit indicated signedness being the most
+ * significant bit of the most significant byte.
+ *
+ * \see fromUInt()
+ */
+ int toInt(bool mostSignificantByteFirst = true) const;
+
/*!
* Converts the first 8 bytes of the vector to a (signed) long long.