C++使用printf语句实现进制转换的示例代码

2025-04-18 16:50

本文主要是介绍C++使用printf语句实现进制转换的示例代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+...

C语言中,printf 函数可以直接实现部分进制转换功能,通过格式说明符(format specifier)快速输出不同进制的数值。以下是详细使用方法及示例代码:

一、printf 原生支持的进制转换

1. 十进制、八进制、十六进制转换

#include <stdio.h>
int main() {
    int num = 255;
    // 十进制输出(默认)
    pandroidrintf("十进制: %d\n", num); php // 255
    // 八进制输出(无前缀)
    printf("八进制: %o\n", num);  // 377
    // 十六进制输出(小写字母)
    printf("十六进制: %x\n", num); // ff
    // 十六进制输出(大写字母)
    printf("十六进制: %X\n", num); // FF
    return 0;
}

2. 显示进制前缀

#include <stdio.h>
int main() {
    int num = 255;
    // 显示八进制前缀 0
    printf("带前缀的八进制: %#o\n", num); // 0377
    // 显示十六进制前缀 0x/0X
    printf("带前缀的十六进制: %#x\n", num); // 0xff
    printf("带前缀的十六进制: %#X\n", num); // 0XFF
    return 0;
}

3. 指定输出宽度和填充

#include <stdio.h>
int main() {
    int num = 15;
    // 输出8位宽度,不足部分补前导零
    printf("补零的China编程八进制: %#08o\n", num);  // 0000017
    printf("补零的十六进制: %#08x\n", num); // 0x00000f
    return 0;
}

二、printf 不支持的进制转换

1. 二进制输出(需要手动实现)

#include <stdio.h>
void print_binary(unsigned inhttp://www.chinasem.cnt num) {
    if (num > 1) print_binary(num >> 1);
    putchar((num & 1) ? '1' : '0');
}
int main() {
    int num = 10;
    printf("二进制: ");
    print_binary(num); // 1010
    return 0;
}

2. 任意进制转换(通用方法)

#include <stdio.h>
#include <string.h>
void reverse(char* str) {
    int len = strlen(str);
    for (int i = 0; i < len/2; i++) {
        char temp = str[i];
        str[i] = str[len-1 - i];
        str[len-1 - i] = temp;
    }
}
void dec_to_base(unsigned int num, int base, char* output) {
    if (base < 2 || base > 36) {
        strcpy(output, "Invalid base");
        return;
    }
    const char digits[] = "0123456789pFaCSNABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int index = 0;
    do {
        output[index++] = digits[num % base];
        num /= base;
    } while (num > 0);
    output[index] = '\0';
    reverse(output);
}
int main() {
    char buffer[32];
    dec_to_base(255, 2, buffer);
    printf("二进制: %s\n", buffer); // 11111111
    return 0;
}

三、输入其他进制的数值(scanf 的用法)

#include <stdio.h>
int main() {
    int num;
    // 输入十六进制数(如 FF)
    printf("输入十六进制数: ");
    scanf("%x", &num);
    printf("十进制值: %d\n", num); // 255
    // 输入八进制数(如 377)
    printf("输入八进制数: ");
    scanf("%o", &num);
    printf("十进制值: %d\n", num); // 255
    return 0;
}

四、注意事项

类型限制

使用 %o, %x, %X 时,建议用 unsigned 类型,避免符号扩展问题:

unsigned int num = 255;
printf("%#x\n", num); // 正确输出 0xff

二进制输出优化

// 使用宏定义快速输出二进制
#define PRINT_BINARY(n) \
    for (int i = sizeof(n)*8-1; i >= 0; i--) \
        putchar((n & (1 << i)) ? '1' : '0'); \
    putchar('\n')
int main() {
    PRINT_BINARY(10); // 00000000000000000000000000001010
    return 0;
}

大数处理

  • 对于超过 unsigned int 范围的数值,需使用字符串处理(类似 pythonint(string, base))。

通过 printf 可以直接实现八进制、十六进制的输出,二进制和其他进制需要手动实现。若需更复杂的进制转换(如浮点数转换或超大数处理),需结合字符串操作或数学库函数。

到此这篇关于C++使用printf语句实现进制转换的示例代码的文章就介绍到这了,更多相关C++ 进制转换内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于C++使用printf语句实现进制转换的示例代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154274

相关文章

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

PyQt6/PySide6中QTableView类的实现

《PyQt6/PySide6中QTableView类的实现》本文主要介绍了PyQt6/PySide6中QTableView类的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录1. 基本概念2. 创建 QTableView 实例3. QTableView 的常用属性和方法

Pandas透视表(Pivot Table)的具体使用

《Pandas透视表(PivotTable)的具体使用》透视表用于在数据分析和处理过程中进行数据重塑和汇总,本文就来介绍一下Pandas透视表(PivotTable)的具体使用,感兴趣的可以了解一下... 目录前言什么是透视表?使用步骤1. 引入必要的库2. 读取数据3. 创建透视表4. 查看透视表总结前言

PyQt6/PySide6中QTreeView类的实现

《PyQt6/PySide6中QTreeView类的实现》QTreeView是PyQt6或PySide6库中用于显示分层数据的控件,本文主要介绍了PyQt6/PySide6中QTreeView类的实现... 目录1. 基本概念2. 创建 QTreeView 实例3. QTreeView 的常用属性和方法属性

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

pandas中位数填充空值的实现示例

《pandas中位数填充空值的实现示例》中位数填充是一种简单而有效的方法,用于填充数据集中缺失的值,本文就来介绍一下pandas中位数填充空值的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是中位数填充?为什么选择中位数填充?示例数据结果分析完整代码总结在数据分析和机器学习过程中,处理缺失数

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型