首页 > 其他分享 >temt

temt

时间:2023-03-02 23:22:48浏览次数:22  
标签:int32 temt return str 16 hex &&

@[TOC](文章目录) # 前言 本文主要记录下,在工作中一些常用的函数。 # 数组长度 ```c #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) ``` # 判断数字 ```c #define IS_DIGIT(x) ((x) >= '0' && (x) <= '9') ``` # 判断16进制 ```c #define IS_HEX(x) (('A' <= (x) && (x) <= 'F') || ('a' <= (x) && (x) <= 'f') || IS_DIGIT(x)) ``` # 判断域名(网址) ```c #define IS_DOMAIN(x) (('A' <= (x) && (x) <= 'Z') || ('a' <= (x) && (x) <= 'z') || IS_DIGIT(x) || ((x) == '-') || ((x) == '.')) ``` # 判断浮点数 ```c #define IS_FLOAT(x) (((x) == '-') || ((x) == '.') || IS_DIGIT(x)) ``` # 判断空字符串 ```c #define STR_EMPTY(str) (str[0] == '\0') ``` # 最小值 ```c //缺点:不能判断输入的数据类型 #define MIN(a, b) ((a) < (b) ? (a) : (b)) ``` # 最大值 ```c //缺点:不能判断输入的数据类型 #define MAX(a, b) ((a) > (b) ? (a) : (b)) ``` # 函数:16进制字符转16进制 ```c /** * \brief 16进制字符转16进制 * \param [in] c 要处理的字符 * \return hex 最终值 * \example '5' -> 0x5 'b'-> 0xb */ int32_t char_to_hex(chr8_t c) { if (c >= '0' && c <= '9') return c - '0'; else if (c >= 'a' && c <= 'f') return c - 'a' + 10; else if (c >= 'A' && c <= 'F') return c - 'A' + 10; else return -1; } ``` # 函数:16进制转16进制字符 ```c /** * \brief 16进制转16进制字符 * \param [in] h 要处理的数字 * \return hex 最终值 * \example 0x5 -> '5' 0xb -> 'B' */ int32_t hex_to_char(uchr8_t h) { if (h <= 9) return h + '0'; else if ((h >= 10) && (h <= 15)) return h + ('A' - 10); else return -1; } ``` # 函数:16进制字符串转16进制 ```c /** * \brief 16进制字符串转成16进制整型 * \param [in] str 要处理的字符串 * \return hex 最终值 * \example "12" -> 0x12 "ab" -> 0xab */ int32_t str_to_hex(chr8_t *str) { int32_t hex = 0; while (*str && IS_HEX(*str)) { hex = (hex << 4) + char_to_hex(*str); str++; } return hex; } ``` # 函数:10进制字符串转10进制 ```c /** * \brief 10进制字符串转成10进制整型 * \param [in] str 要处理的字符串 * \return digit 最终值 * \example "12" -> 0x0b "ab" -> 0x0(不支持返回0) */ int32_t str_to_digit(chr8_t *str) { int32_t digit = 0; while (*str && IS_DIGIT(*str)) { digit = (digit * 10 + (*str - '0')); str++; } return digit; } ``` # 函数: 判断字符串是不是浮点数 ```c /** * \brief 判断字符串是不是浮点数 * \param [in] str 要判断的字符串 * \return * USRTRUE 是浮点数 * USRFALSE 不是浮点数 */ usrbool str_isfloat(chr8_t *str) { for (int32_t i = 0; str[i] != '\0'; i++) { if (!IS_FLOAT(str[i])) { return USRFALSE; } } return USRTRUE; } ``` # 函数: 判断字符串是不是16进制 ```c /** * \brief 判断字符串是不是16进制 * \param [in] str 要判断的字符串 * \return * USRTRUE 是16进制 * USRFALSE 不是16进制 */ usrbool str_ishex(chr8_t *str) { for (int32_t i = 0; str[i] != '\0'; i++) { if (!IS_HEX(str[i])) { return USRFALSE; } } return USRTRUE; } ``` # 函数: 计算10的n次方 ```c /** * \brief 计算10的N次方 * \param [in] n 对应的次方数 * \return factor 最终值 * \example 10**3 -> 1000 */ uint32_t calc_10nth(uint32_t n) { uint32_t i, factor = 1; for (i = 0; i < n; i++) { factor *= 10; } return factor; } ``` 如果能够帮助到您,不介意的话,请作者喝一杯咖啡吧 ![img](/i/l/?n=23&i=blog/2976129/202302/2976129-20230223130707176-562779962.png)

标签:int32,temt,return,str,16,hex,&&
From: https://www.cnblogs.com/Wei-Ting/p/17174004.html

相关文章

  • systemtap从入门到放弃(二)
    前言上一篇《systemtap从入门到放弃(一)》我们知道了什么是systemtap,以及如何书写简单的systemtap脚本。本篇承接上文,介绍systemtap的安装和简易场景应用,通过几个小例子掌握......
  • systemtap从入门到放弃(一)
    前言内核开发从业者,都知道一个代码调试"大杀器":printk!除此之外大家依据自己的习惯,还经常用一些诸如kdump这类的复杂工具。对于systemtap,有人可能熟悉有人可能没听过,本文......
  • SystemTrayDemo
    遗留问题:win7 java.awt.TrayIcon的displayMessage方法没有生效,通知消息不能正常弹出。许多桌面环境都有一个区域用于放置在后台运行的程序的图标,这些程序偶尔会将某些事件......
  • Qt QSystemTrayIcon(托盘程序整个例子)
    QSystemTrayIcon,来达到一些基本的托盘程序,也是本文章要讲的。第二种是继承QSystemTrayIcon类,这样子类设计可以使得托盘程序更加功能强大,接下来给大家讲解简单的托盘:托盘......
  • Qt 托盘QSystemTrayIcon的基础使用
    一、效果1、点击“闪烁”按钮可以模拟消息闪动,点击后弹出消息详情对话框;2、托盘右键菜单包括:“显示”和“关闭”。3、双击托盘显示程序,关闭后隐藏到托盘。二、源码主......
  • QSystemTrayIcon增加系统托盘图标Demo
    先看一下效果:代码如下#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QMainWindow>#include<QMenu>#include<QSystemTrayIcon>#include<QCloseEvent>namespaceUi{......
  • 【WPF 】ItemTemplateSelector模板选择器
    WPF的ItemsControl数据绑定中,有时会遇到绑定的数据源是多种类型,并且需要对不同类型使用不同的模板。这个时候就需要用到 ItemTemplateSelector。ItemTemplateSelector......
  • tauri学习(6)-系统托盘systemTray
    接上节继续,研究下系统托盘。一、tauri.conf.json配置启用系统托盘 二、Rust中添加托盘运行效果:但是只有一个托盘图标,点了啥反应都没有。 三、给托盘加菜单效......