字符串转为16进制字符串
/**
* 字符串转为hex字符串
*
* @param dst 返回值 32位长度的字符串
* @param src 原始字符串
* @param src_len 原始字符串长度
* **/
void str2hex(unsigned char *dst, unsigned char *src, int src_len) {
if (src_len <= 0 || dst == NULL) {
LOGE("src_len must be bigger than zero! or dst must not be NULL");
return;
}
short i;
unsigned char high, low;//准备两个保存高位和低位字节
// LOGE("src_len=%d",src_len);
for (i=0; i < src_len; i++) { //TODO 测试发现,i没有赋初始化值,导致内存奔溃,2018-10-29
high=src[i] >> 4;//原始字节右移4位,取出高位字节
low=src[i] & 0x0f;//取出低位字节
//计算高位
high+=0x30;//+0 判断是否是数字
if (high > 0x39)
dst[i * 2]=high + 0x07;//非数字
else
dst[i * 2]=high;//数字
//计算低位
low+=0x30;//
if (low > 0x39)
dst[i * 2 + 1]=low + 0x07;
else
dst[i * 2 + 1]=low;
}
dst[i * 2]='\0';//结束符
}
字符转大小写转换
/**
*
* 大写转为小写
*
* ***/
void convert2Lower(unsigned char *src) {
if (src == NULL) {
LOGE("convert2Lower src is NULL");
return;
}
while (*src != '\0') {
if (*src >= 'A' && *src <= 'Z')
*src+=32;//转为小写
src++;//往下移动
}
}
/**
*
* 小写转为大写
*
* **/
void convert2Upper(unsigned char *src) {
if (src == NULL) {
LOGE("convert2Upper src is NULL");
return;
}
while (*src != '\0') {
if (*src >= 'a' && *src <= 'z')
*src-=32;//转为大写
src++;//往下移动
}
}
读取当前系统的时间戳-13为精确到秒
/**
*
* 获取系统时间戳
* **/
int get_timestamp(char * str_timstamp){
struct timeval tv;
gettimeofday(&tv,NULL);
snprintf(str_timstamp, sizeof(str_timstamp)*13, "%010d%03d",tv.tv_sec, tv.tv_usec/1000);
// LOGE("str_ms=%s , len=%d ",str_timstamp,strlen(str_timstamp));
return 0;
}
去掉字符串最后一个回车符号
/**
* 判断类型的最后一个是否为回车符号
* **/
char* trim(char* type)
{
if(type == NULL)
{
return NULL;
}
char *dst = malloc(strlen(type)-1*sizeof(char));
memcpy(dst,type,strlen(type)-1);
return dst;
}