//
|
// Created by YY on 2020/1/7.
|
//
|
|
#include "xconvert.h"
|
#include <cstdint>
|
#include <cstring>
|
|
void ConvertPhoneNum(uint8_t *dst, int length, const char *src)
|
{
|
int p = length - 1;
|
int q = strlen(src) - 1;
|
|
memset(dst, 0, length);
|
|
while (q >= 0) {
|
dst[p] = src[q] - '0';
|
q--;
|
if (q >= 0) {
|
dst[p] |= (src[q] - '0')<<4;
|
p--;
|
q--;
|
}
|
}
|
}
|
|
void ConvertHex2String(char *str, const uint8_t *hex, int length)
|
{
|
const char HEX[] = "0123456789ABCDEF";
|
int j = 0;
|
|
for (int i = 0; i < length; ++i) {
|
str[j++] = HEX[(hex[i]>>4)&0x0F];
|
str[j++] = HEX[hex[i]&0x0F];
|
}
|
str[j++] = 0;
|
}
|
|
void ConvertString2Hex(uint8_t *hex, int length, const char *str)
|
{
|
if (length < strlen(str)/2) return;
|
|
for (int i = 0, j = 0; i < strlen(str); ++i, ++j) {
|
if (str[i] >= '0' && str[i] <= '9') {
|
hex[j] = str[i] - '0';
|
} else if (str[i] >= 'A' && str[i] <= 'F') {
|
hex[j] = 10 + str[i] - 'A';
|
} else if (str[i] >= 'a' && str[i] <= 'f') {
|
hex[j] = 10 + str[i] - 'a';
|
}
|
hex[j] <<= 4;
|
i++;
|
if (str[i] >= '0' && str[i] <= '9') {
|
hex[j] |= str[i] - '0';
|
} else if (str[i] >= 'A' && str[i] <= 'F') {
|
hex[j] |= 10 + str[i] - 'A';
|
} else if (str[i] >= 'a' && str[i] <= 'f') {
|
hex[j] |= 10 + str[i] - 'a';
|
}
|
}
|
}
|