进制表示

在 C++ 中,十六进制、十进制和八进制是表示整数的三种常用进制,它们在代码中的表示形式不同

一、问题描述

在代码中,错用 报文接受的 0600 来代表 十六进制。实则0600 代表的是八进制。

//报文:68 15 00 03 00 01 80 8A E6 68 63 27 E7 68 11 01 06 00 01 00 00 00 64 00
//dev_id 表示接受到 11 01 06 00 
void get_id()
{
    if((dev_id & 0xffff) = 0600 ) //错误
    {
        printf("获取成功 ! \n");
    }
    else
    {
         printf("获取失败 ! \n");
    }
}

二、代码改正

//报文:68 15 00 03 00 01 80 8A E6 68 63 27 E7 68 11 01 06 00 01 00 00 00 64 00
//dev_id 表示接受到 11 01 06 00 
void get_id()
{
    if((dev_id & 0xffff) = 0x0600 ) //错误
    {
        printf("获取成功 ! \n");
    }
    else
    {
         printf("获取失败 ! \n");
    }
}

三、表示方法

C++ 通过前缀区分不同进制的整数常量:

  • 十进制(Decimal)
    无前缀,由数字 0-9 组成(不能以 0 开头,除非表示 0 本身)。
    示例:42、100、-7。

  • 八进制(Octal)
    以 0 为前缀,由数字 0-7 组成。
    示例:052(对应十进制 42)、0144(对应十进制 100)。

  • 十六进制(Hexadecimal)
    以 0x 或 0X 为前缀,由数字 0-9 和字母 a-f(或 A-F,大小写不敏感)组成。
    示例:0x2A(对应十进制 42)、0x64(对应十进制 100)、0XFF(对应十进制 255)。
posted @ 2025-10-10 23:14  开心猪扒  阅读(9)  评论(0)    收藏  举报