#define isEndianTyped true //ture为大端;false为小端
1、quint32转QbyteArray
QByteArray byteToBytes::quint32ToQByteArray(quint32 input)
{
QByteArray output;
if (isEndianTyped)
{
output[3] = (uchar)(0x000000ff & input);
output[2] = (uchar)((0x0000ff00 & input) >> 8);
output[1] = (uchar)((0x00ff0000 & input) >> 16);
output[0] = (uchar)((0xff000000 & input) >> 24);
}
else
{
output[0] = (uchar)(0x000000ff & input);
output[1] = (uchar)((0x0000ff00 & input) >> 8);
output[2] = (uchar)((0x00ff0000 & input) >> 16);
output[3] = (uchar)((0xff000000 & input) >> 24);
}
return output;
}
2、QbyteArray 转quint32
quint32 byteToBytes::QByteArrayToquint32(QByteArray input)
{
qint64 output;
if (isEndianTyped)
{
output = input[3] & 0x000000FF;
output |= (input[2] << 8) & 0x0000FF00;
output |= (input[1] << 16) & 0x00FF0000;
output |= (input[0] << 24) & 0xFF000000;
}
else
{
output = input[0] & 0x000000FF;
output |= (input[1] << 8) & 0x0000FF00;
output |= (input[2] << 16) & 0x00FF0000;
output |= (input[3] << 24) & 0xFF000000;
}
return output;
}
3、qint32转QbyteArray
QByteArray byteToBytes::qint32ToQByteArray(qint32 input)
{
QByteArray output;
if (isEndianTyped)
{
output[3] = (uchar)(0x000000ff & input);
output[2] = (uchar)((0x0000ff00 & input) >> 8);
output[1] = (uchar)((0x00ff0000 & input) >> 16);
output[0] = (uchar)((0xff000000 & input) >> 24);
}
else
{
output[0] = (uchar)(0x000000ff & input);
output[1] = (uchar)((0x0000ff00 & input) >> 8);
output[2] = (uchar)((0x00ff0000 & input) >> 16);
output[3] = (uchar)((0xff000000 & input) >> 24);
}
return output;
}
4、QbyteArray转qint32
qint32 byteToBytes::QByteArrayToqint32(QByteArray input)
{
qint64 output;
if (isEndianTyped)
{
output = input[3] & 0x000000FF;
output |= (input[2] << 8) & 0x0000FF00;
output |= (input[1] << 16) & 0x00FF0000;
output |= (input[0] << 24) & 0xFF000000;
}
else
{
output = input[0] & 0x000000FF;
output |= (input[1] << 8) & 0x0000FF00;
output |= (input[2] << 16) & 0x00FF0000;
output |= (input[3] << 24) & 0xFF000000;
}
return output;
}
5、quint16转QbyteArray
QByteArray byteToBytes::quint16ToQByteArray(quint16 input)
{
QByteArray output;
if (isEndianTyped)
{
output[3] = (uchar)(0x000000ff & input);
output[2] = (uchar)((0x0000ff00 & input) >> 8);
}
else
{
output[0] = (uchar)(0x000000ff & input);
output[1] = (uchar)((0x0000ff00 & input) >> 8);
}
return output;
}
6、QbyteArray转quint16
quint16 byteToBytes::QByteArrayToquint16(QByteArray input)
{
qint64 output;
if (isEndianTyped)
{
output = input[3] & 0x000000FF;
output |= (input[2] << 8) & 0x0000FF00;
}
else
{
output = input[0] & 0x000000FF;
output |= (input[1] << 8) & 0x0000FF00;
}
return output;
}
7、qint16转QbyteArray
QByteArray byteToBytes::qint16ToQByteArray(qint16 input)
{
QByteArray output;
if (isEndianTyped)
{
output[3] = (uchar)(0x000000ff & input);
output[2] = (uchar)((0x0000ff00 & input) >> 8);
}
else
{
output[0] = (uchar)(0x000000ff & input);
output[1] = (uchar)((0x0000ff00 & input) >> 8);
}
return output;
}
8、QbyteArray转qint16
qint16 byteToBytes::QByteArrayToqint16(QByteArray input)
{
qint64 output;
if (isEndianTyped)
{
output = input[3] & 0x000000FF;
output |= (input[2] << 8) & 0x0000FF00;
}
else
{
output = input[0] & 0x000000FF;
output |= (input[1] << 8) & 0x0000FF00;
}
return output;
}
9、QbyteArray转quint64
QByteArray byteToBytes::quint64ToQByteArray(quint64 input)
{
QByteArray output;
if (isEndianTyped)
{
QByteArray _output;
_output.resize(sizeof(input));
memcpy(_output.data(), &input, sizeof(input));
for (int i = 0; i < _output.size(); i++)
{
output[i] = _output[_output.size() - i - 1];
}
}
else
{
output.resize(sizeof(input));
memcpy(output.data(), &input, sizeof(input));
}
return output;
}
10、quint64转QbyteArray
quint64 byteToBytes::QByteArrayToquint64(QByteArray input)
{
qint64 output;
if (isEndianTyped)
{
QByteArray _input;
for (int i = 0; i < input.size(); i++)
{
_input[i] = input[input.size() - i - 1];
}
memcpy(&output, _input, sizeof(output));
}
else
{
memcpy(&output, input, sizeof(output));
}
return output;
}
11、QbyteArray转qint64
QByteArray byteToBytes::qint64ToQByteArray(qint64 input)
{
QByteArray output;
if (isEndianTyped)
{
QByteArray _output;
_output.resize(sizeof(input));
memcpy(_output.data(), &input, sizeof(input));
for (int i = 0; i < _output.size(); i++)
{
output[i] = _output[_output.size() - i - 1];
}
}
else
{
output.resize(sizeof(input));
memcpy(output.data(), &input, sizeof(input));
}
return output;
}
12、qint64转QbyteArray
qint64 byteToBytes::QByteArrayToqint64(QByteArray input)
{
qint64 output;
if (isEndianTyped)
{
QByteArray _input;
for (int i = 0; i < input.size(); i++)
{
_input[i] = input[input.size() - i - 1];
}
memcpy(&output, _input, sizeof(output));
}
else
{
memcpy(&output, input, sizeof(output));
}
return output;
}
13、QbyteArray转int
int byteToBytes::QByteArrayToint(QByteArray input)
{
int output;
if (isEndianTyped)
{
output = input[3] & 0x000000FF;
output |= (input[2] << 8) & 0x0000FF00;
output |= (input[1] << 16) & 0x00FF0000;
output |= (input[0] << 24) & 0xFF000000;
}
else
{
output = input[0] & 0x000000FF;
output |= (input[1] << 8) & 0x0000FF00;
output |= (input[2] << 16) & 0x00FF0000;
output |= (input[3] << 24) & 0xFF000000;
}
return output;
}
14、int转QbyteArray
QByteArray byteToBytes::intToQByteArray(int input)
{
QByteArray output;
if (isEndianTyped)
{
output[3] = (uchar)(0x000000ff & input);
output[2] = (uchar)((0x0000ff00 & input) >> 8);
output[1] = (uchar)((0x00ff0000 & input) >> 16);
output[0] = (uchar)((0xff000000 & input) >> 24);
}
else
{
output[0] = (uchar)(0x000000ff & input);
output[1] = (uchar)((0x0000ff00 & input) >> 8);
output[2] = (uchar)((0x00ff0000 & input) >> 16);
output[3] = (uchar)((0xff000000 & input) >> 24);
}
return output;
}
15、QbyteArray转uint
uint byteToBytes::QByteArrayTouint(QByteArray input)
{
uint output;
if (isEndianTyped)
{
output = input[3] & 0x000000FF;
output |= (input[2] << 8) & 0x0000FF00;
output |= (input[1] << 16) & 0x00FF0000;
output |= (input[0] << 24) & 0xFF000000;
}
else
{
output = input[0] & 0x000000FF;
output |= (input[1] << 8) & 0x0000FF00;
output |= (input[2] << 16) & 0x00FF0000;
output |= (input[3] << 24) & 0xFF000000;
}
return output;
}
16、uint转QbyteArray
QByteArray byteToBytes::uintToQByteArray(uint input)
{
QByteArray output;
if (isEndianTyped)
{
output[3] = (uchar)(0x000000ff & input);
output[2] = (uchar)((0x0000ff00 & input) >> 8);
output[1] = (uchar)((0x00ff0000 & input) >> 16);
output[0] = (uchar)((0xff000000 & input) >> 24);
}
else
{
output[0] = (uchar)(0x000000ff & input);
output[1] = (uchar)((0x0000ff00 & input) >> 8);
output[2] = (uchar)((0x00ff0000 & input) >> 16);
output[3] = (uchar)((0xff000000 & input) >> 24);
}
return output;
}
17、QbyteArray转short
short byteToBytes::QByteArrayToshort(QByteArray input)
{
qint64 output;
if (isEndianTyped)
{
output = input[3] & 0x000000FF;
output |= (input[2] << 8) & 0x0000FF00;
}
else
{
output = input[0] & 0x000000FF;
output |= (input[1] << 8) & 0x0000FF00;
}
return output;
}
18、short转QbyteArray
QByteArray byteToBytes::shortToQByteArray(short input)
{
QByteArray output;
if (isEndianTyped)
{
output[3] = (uchar)(0x000000ff & input);
output[2] = (uchar)((0x0000ff00 & input) >> 8);
}
else
{
output[0] = (uchar)(0x000000ff & input);
output[1] = (uchar)((0x0000ff00 & input) >> 8);
}
return output;
}
19、QbyteArray转ushort
ushort byteToBytes::QByteArrayToushort(QByteArray input)
{
qint64 output;
if (isEndianTyped)
{
output = input[3] & 0x000000FF;
output |= (input[2] << 8) & 0x0000FF00;
}
else
{
output = input[0] & 0x000000FF;
output |= (input[1] << 8) & 0x0000FF00;
}
return output;
}
20、ushort转QbyteArray
QByteArray byteToBytes::ushortToQByteArray(ushort input)
{
QByteArray output;
if (isEndianTyped)
{
output[3] = (uchar)(0x000000ff & input);
output[2] = (uchar)((0x0000ff00 & input) >> 8);
}
else
{
output[0] = (uchar)(0x000000ff & input);
output[1] = (uchar)((0x0000ff00 & input) >> 8);
}
return output;
}
21、QbyteArray转float
float byteToBytes::QByteArrayTofloat(QByteArray input)
{
float output;
if (isEndianTyped)
{
QByteArray _input;
for (int i = 0; i < input.size(); i++)
{
_input[i] = input[input.size() - i - 1];
}
memcpy(&output, _input, sizeof(output));
}
else
{
memcpy(&output, input, sizeof(output));
}
return output;
}
22、float转QbyteArray
QByteArray byteToBytes::floatToQByteArray(float input)
{
QByteArray output;
if (isEndianTyped)
{
QByteArray _output;
_output.resize(sizeof(input));
memcpy(_output.data(), &input, sizeof(input));
for (int i = 0; i < _output.size(); i++)
{
output[i] = _output[_output.size() - i - 1];
}
}
else
{
output.resize(sizeof(input));
memcpy(output.data(), &input, sizeof(input));
}
return output;
}
23、QbyteArray转double
double byteToBytes::QByteArrayTodouble(QByteArray input)
{
double output;
if (isEndianTyped)
{
QByteArray _input;
for (int i = 0; i < input.size(); i++)
{
_input[i] = input[input.size() - i - 1];
}
memcpy(&output, _input, sizeof(output));
}
else
{
memcpy(&output, input, sizeof(output));
}
return output;
}
24、double转QbyteArray
QByteArray byteToBytes::doubleToQByteArray(double input)
{
QByteArray output;
if (isEndianTyped)
{
QByteArray _output;
_output.resize(sizeof(input));
memcpy(_output.data(), &input, sizeof(input));
for (int i = 0; i < _output.size(); i++)
{
output[i] = _output[_output.size() - i - 1];
}
}
else
{
output.resize(sizeof(input));
memcpy(output.data(), &input, sizeof(input));
}
return output;
}
版权声明:本文为博主原创文章,转载请附上博文链接!