int转byte数组:
void IntToBytes(int num, unsigned char* bytes, int size)
{
for (int i = 0; i < size; i++)
{
int offset = i * 8;
bytes[i] = (num >> offset) & 0xFF;
}
}
byte数组转int:
int BytesToInt(const unsigned char* bytes, const int length)
{
int num = 0;
for (int i = 0; i < length; i++)
{
int offset = i * 8;
num |= (bytes[i] & 0xFF) << offset;
}
return num;
}
byte数组转16进制字符串:
std::string BytesToHexStr(const unsigned char* bytes, const int length)
{
std::string buff = "";
for (int i = 0; i < length; i++)
{
int high = bytes[i] / 16;
int low = bytes[i] % 16;
buff += (high < 10) ? ('0' + high) : ('A' + high - 10);
buff += (low < 10) ? ('0' + low) : ('A' + low - 10);
}
return buff;
}
16进制字符串转byte数组:
void HexToBytes(const std::string hex, unsigned char* bytes)
{
int len = hex.length() / 2;
std::string strByte;
unsigned int num;
for (int i = 0; i < len; i++)
{
strByte = hex.substr(i * 2, 2);
sscanf_s(strByte.c_str(), "%x", &num);
bytes[i] = num;
}
}