1、String To Byte, Byte To String
string str = "Hello world";
//string to byte
byte* px = (byte*)str.c_str();
int len = str.length();
//byte to string
char* p = new char[sizeof(px)];
memcpy(p, px, len);
p[len] = 0;
string str1(p);
cout << str1;
2、BytesToInt
int bytesToInt(byte* bytes, int size = 4)
{
int a;
switch (size)
{
case 1:
{
a = bytes[0] & 0xFF;
break;
}
case 2:
{
a = bytes[0] & 0xFF;
a |= ((bytes[1] << 8) & 0xFF00);
break;
}
case 3:
{
a = bytes[0] & 0xFF;
a |= ((bytes[1] << 8) & 0xFF00);
a |= ((bytes[2] << 16) & 0xFF0000);
break;
}
case 4:
{
a = bytes[0] & 0xFF;
a |= ((bytes[1] << 8) & 0xFF00);
a |= ((bytes[2] << 16) & 0xFF0000);
a |= ((bytes[3] << 24) & 0xFF000000);
break;
}
}
return a;
}
3、ByteArrayToFloat,FloatToByteArray
union FloatType {
float FloatNum;
int IntNum;
};
float ByteArrayToFloat(unsigned char * buf, size_t size)
{
FloatType Number;
Number.IntNum = 0;
Number.IntNum = buf[3];
Number.IntNum = (Number.IntNum << 8) | buf[2];
Number.IntNum = (Number.IntNum << 8) | buf[1];
Number.IntNum = (Number.IntNum << 8) | buf[0];
return Number.FloatNum;
}
unsigned char * FloatToByteArray(float f)
{
unsigned char * DataBuf = new unsigned char[4];
FloatType Number;
Number.FloatNum = f;
DataBuf[0] = (unsigned char)Number.IntNum;
DataBuf[1] = (unsigned char)(Number.IntNum >> 8);
DataBuf[2] = (unsigned char)(Number.IntNum >> 16);
DataBuf[3] = (unsigned char)(Number.IntNum >> 24);
return DataBuf;
}