首页 > 其他分享 >基础工程

基础工程

时间:2023-11-18 21:44:46浏览次数:33  
标签:typedef 工程 int 基础 unsigned signed char &&

---basictype.h---

#ifndef __BASICTYPE_H__
#define __BASICTYPE_H__

typedef unsigned char  uchar;
typedef   signed char  schar;
typedef unsigned short ushort;
typedef   signed short sshort;
typedef unsigned int   uint;
typedef   signed int   sint;
typedef unsigned long  ulong;
typedef   signed long  slong;

typedef unsigned char  uint8;
typedef   signed char  sint8;
typedef unsigned short uint16;
typedef   signed short sint16;
typedef unsigned int   uint32;
typedef   signed int   sint32;
typedef unsigned long  ulong32;
typedef   signed long  slong32;

typedef unsigned char  uint8_t;
typedef   signed char  sint8_t;
typedef unsigned short uint16_t;
typedef   signed short sint16_t;
typedef unsigned int   uint32_t;
typedef   signed int   sint32_t;
typedef unsigned long  ulong32_t;
typedef   signed long  slong32_t;

#endif

---char2hex.h---

#ifndef __CHAR2HEX_H__
#define __CHAR2HEX_H__

#include "basictype.h"

#define IS_HEX_CHAR(x) ((((x)>='0')&&((x)<='9'))||(((x)>='a')&&((x)<='f'))||(((x)>='A')&&((x)<='F')))

#define CHAR2HEX(x) ((((x)>='0')&&((x)<='9'))?((x)-'0'):(((x)>='a')&&((x)<='f'))?((x)-'a'+10):((x)-'A'+10))

bool is_hex_char(char x);

bool char2hex(char x, int* v);

bool char2num(char x, int* v);

int hex_char_str_to_byte_stream(const char* p, uchar* buf, uint n);

uint get_uint_value_from_hex_char_str(const char* p);

uint get_uint_value_from_char_str(const char* p);

#endif

---char2hex.cpp---

#include "char2hex.h"

#ifndef NULL
#define NULL ((void*)0)
#endif

bool is_hex_char(char x)
{
    if (x >= '0' && x <= '9') {
        return true;
    }
    if (x >= 'a' && x <= 'f') {
        return true;
    }
    if (x >= 'A' && x <= 'F') {
        return true;
    }
    return false;
}

bool char2hex(char x, int *v)
{
    if (v == NULL) {
        return false;
    }
    if (x >= '0' && x <= '9') {
        *v = x - '0';
        return true;
    }
    if (x >= 'a' && x <= 'f') {
        *v = x - 'a' + 10;
        return true;
    }
    if (x >= 'A' && x <= 'F') {
        *v = x - 'A' + 10;
        return true;
    }
    return false;
}

bool char2num(char x, int* v)
{
    if (v == NULL) {
        return false;
    }
    if (x >= '0' && x <= '9') {
        *v = x - '0';
        return true;
    }
    return false;
}

/*
 * p is a pointer point to string such like "12 34 56 78 9A BC DE F0" 
 * buf is a array to store convert result
 * n is the buf size
 * the return value is real convert size
 * in this example the convert size may be equal to 8 while n >= 8, if n < 8, the convert size is n
 */
int hex_char_str_to_byte_stream(const char* p, uchar* buf, uint n)
{
    int i = 0;
    uchar hex = 0;
    int tmp1;
    int tmp2;
    //check par
    if (p == NULL || buf == NULL || n == 0) {
        return 0;
    }
    while (1) {
        if (char2hex(*p, &tmp1)) {
            p++;
            if (char2hex(*p, &tmp2)) {
                p++;
                if (*p == ' ') {
                    p++;
                }
                hex = (tmp1 << 4) | tmp2;
                buf[i++] = hex;
                if (i >= n) {
                    return n;
                }
                if (*p == 0) {
                    return i;
                }
            }
            else {
                return 0;
            }
        }
        else {
            return 0;
        }
    }

}

uint get_uint_value_from_hex_char_str(const char* p)
{
    uint ret = 0;

    if (p == NULL) {
        return 0;
    }

    if (*p == '0' && (*(p+1)) == 'x') {
        p += 2;
    }
    else if (*p == '0' && (*(p+1)) == 'X') {
        p += 2;
    }

    int tmp;
    while (char2hex(*p, &tmp)) {
        ret = (ret << 4) + tmp;
        p++;
    }

    return ret;
}

uint get_uint_value_from_char_str(const char* p)
{
    uint ret = 0;
    uint base = 10;

    if (p == NULL) {
        return 0;
    }

    if (*p == '0' && (*(p + 1)) == 'x') {
        p += 2;
        base = 16;
    }
    else if (*p == '0' && (*(p + 1)) == 'X') {
        p += 2;
        base = 16;
    }

    int tmp;
    if (base == 16) {
        while (char2hex(*p, &tmp)) {
            ret = ret * base + tmp;
            p++;
        }
    }
    else {
        while (char2num(*p, &tmp)) {
            ret = ret * base + tmp;
            p++;
        }
    }

    return ret;
}

 

标签:typedef,工程,int,基础,unsigned,signed,char,&&
From: https://www.cnblogs.com/-FlyingFish-/p/17841179.html

相关文章

  • Siemens和Codesys关于OPC UA 服务器的基础配置
    西门子配置步骤如下打开设备属性——>OPCUA 激活OPCUA服务 设备URL地址 通用设置端口:设置服务器的端口号,默认4840,允许范围:1024-49151之间最大会话超时时间:指定在不进行数据交换的情况下OPCUA服务器关闭会话之前的最大时长。默认30s,允许范围:1-600000s之......
  • 2023-2024-1 20231327《计算机基础与程序设计》第8周学习总结
    学期(2023-2024-1)学号(20231327)《计算机基础与程序设计》第8周学习总结作业信息课程<班级的链接>(2023-2024-1-计算机基础与程序设计)要求<作业要求的链接>(2023-2024-1计算机基础与程序设计第7周作业)目标<了解并使用循环结构>作业正文https://i.cnblogs.com/p......
  • 資料結構和演算法對一個工程師的意義?如何提升實力?
    我們常聽到人們會說,「演算法」和「資料結構」是一名優秀工程師的必備素養,但究竟這句話是什麼意思呢?工程師面試時常常用LeetCode解題來篩選面試者,而想要針對LeetCode刻意練習時,又需要先有「演算法」和「資料結構」的觀念基礎。這個面試準備過程即使是對本科系畢業的學生也需要......
  • 2023-2024-1 20231321 《计算机基础与程序设计》第八周学习总结
    2023-2024-120231321《计算机基础与程序设计》第八周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2023-2024-1计算机基础与程序设计第八周作业)这个作业的目标<计算机科学概论......
  • IDEA创建第一个JAVA项目,带你认识Java工程中的项目结构
    不管学习那门编程语言,掌握当下流行的集成开发环境是必不可少的。当然仍有多年前的大佬,因为那会的“艰苦条件”,仍有保留着使用文本编辑器编写代码的习惯。对于JAVA来说两大集成开发环境非常受大家青睐!IDEA和eclipse。今天这里将以IDEA为例,带大家认识一个Java工程中应该有哪些......
  • 【Java基础】while循环的标号
    需求:学生管理系统的菜单有5个操作选项:1.添加学生、2.删除学生、3.修改学生、4.查看学生、5.退出;进入系统后操作选项会循环给出,但当输入5触发退出时循环结束。实现:给循环添加标号,在break后添加循环标号指示需要结束的循环学生管理系统的菜单初始化代码publicclassStuMan......
  • Python十道基础编程题
    1.输入日期,判断这一天是这一年的第几天importdatetimedefday_of_year():year=eval(input('请输入年份:'))month=eval(input('请输入月份:'))day=eval(input('请输入天:'))date1=datetime.date(year,month,day)date2=datetime.date......
  • 二、基础操作
    二、基础操作2.1重启系统1(1)立刻关机2shutdown-hnow或者poweroff3(2)两分钟后关机4shutdown-h22.2关闭系统1(1)立刻重启2shutdown-rnow或者reboot3(2)两分钟后重启4shutdown-r22.3帮助命令(help)1ifconfig--help//查看......
  • 【第26章】大数据安全需求分析与安全保护工程
    26.1大数据安全威胁与需求分析26.1.1大数据相关概念发展数据成为信息时代的重要资源。随着数字化、网络化、智能化等相关信息技术的应用发展,数据产生及获取日益方便,数据规模已超出了传统数据库存储及分析处理能力范围,从而形成大数据的新概念。一般来说,大数据是指非传统的数据......
  • 【第25章】移动应用安全需求分析与安全保护工程
    25.1移动应用安全威胁与需求分析25.1.1移动应用系统组成包括三个部分:一是移动应用,简称App;二是通信网络,包括无线网络、移动通信网络及互联网;三是应用服务端,由相关的服务器构成,负责处理来自App的相关信息或数据。25.1.2移动应用安全分析移动应用的安全威胁主要有以下......