C++数据格式化6 - uint转换成二六进制字符串

2024-06-21 03:12

本文主要是介绍C++数据格式化6 - uint转换成二六进制字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 1. 关键词
  • 2. strfmt.h
  • 3. strfmt.cpp
  • 4. 测试代码
  • 5. 运行结果
  • 6. 源码地址

1. 关键词

C++ 数据格式化 字符串处理 std::string int bin 跨平台

2. strfmt.h

#pragma once#include <string>
#include <cstdint>
#include <sstream>
#include <iomanip>namespace cutl
{/*** @brief Format uint8_t value to a binary string.** @param value the value to be formatted.* @param separator the separator between each pair of binary characters, default is comma.* @return std::string the formatted string.*/std::string to_bin(uint8_t value, char separator = ',');/*** @brief Format uint16_t value to a binary string.** @param value the value to be formatted.* @param separator the separator between each pair of binary characters, default is space.* @return std::string the formatted string.*/std::string to_bin(uint16_t value, char separator = ' ');/*** @brief Format uint32_t value to a binary string.** @param value the value to be formatted.* @param separator the separator between each pair of binary characters, default is space.* @return std::string the formatted string.*/std::string to_bin(uint32_t value, char separator = ' ');/*** @brief Format uint64_t value to a binary string.** @param value the value to be formatted.* @param separator the separator between each pair of binary characters, default is space.* @return std::string the formatted string.*/std::string to_bin(uint64_t value, char separator = ' ');
} // namespace cutl

3. strfmt.cpp

#include <sstream>
#include <iomanip>
#include <bitset>
#include "strfmt.h"namespace cutl
{std::string to_bin(uint8_t value, char separator){std::string text;std::bitset<4> v1((value >> 4) & 0xF);std::bitset<4> v2(value & 0xF);text += v1.to_string();text += separator;text += v2.to_string();return text;}std::string to_bin(uint16_t value, char separator){std::string text;text += to_bin((uint8_t)((value >> 8) & 0xFF)) + separator;text += to_bin((uint8_t)(value & 0xFF));return text;}std::string to_bin(uint32_t value, char separator){std::string text;text += to_bin((uint8_t)((value >> 24) & 0xFF)) + separator;text += to_bin((uint8_t)((value >> 16) & 0xFF)) + separator;text += to_bin((uint8_t)((value >> 8) & 0xFF)) + separator;text += to_bin((uint8_t)(value & 0xFF));return text;}std::string to_bin(uint64_t value, char separator){std::string text;text += to_bin((uint8_t)((value >> 56) & 0xFF)) + separator;text += to_bin((uint8_t)((value >> 48) & 0xFF)) + separator;text += to_bin((uint8_t)((value >> 40) & 0xFF)) + separator;text += to_bin((uint8_t)((value >> 32) & 0xFF)) + separator;text += to_bin((uint8_t)((value >> 24) & 0xFF)) + separator;text += to_bin((uint8_t)((value >> 16) & 0xFF)) + separator;text += to_bin((uint8_t)((value >> 8) & 0xFF)) + separator;text += to_bin((uint8_t)(value & 0xFF));return text;}
} // namespace cutl

4. 测试代码

#include "common.hpp"
#include "strfmt.h"void TestToBin()
{PrintSubTitle("TestToBin");uint8_t a = 0x0f;std::cout << "uint8: " << cutl::to_bin(a) << std::endl;uint16_t b = 0xfc;std::cout << "uint16: " << cutl::to_bin(b) << std::endl;uint32_t c = 0x1b02aefc;std::cout << "uint32: " << cutl::to_bin(c) << std::endl;uint64_t d = 0xabcdef0123456789;std::cout << "uint64: " << cutl::to_bin(d) << std::endl;
}

5. 运行结果

---------------------------------------------TestToBin----------------------------------------------
uint8: 0000,1111
uint16: 0000,0000 1111,1100
uint32: 0001,1011 0000,0010 1010,1110 1111,1100
uint64: 1010,1011 1100,1101 1110,1111 0000,0001 0010,0011 0100,0101 0110,0111 1000,1001

6. 源码地址

更多详细代码,请查看本人写的C++ 通用工具库: common_util, 本项目已开源,代码简洁,且有详细的文档和Demo。

本文由博客一文多发平台 OpenWrite 发布!

这篇关于C++数据格式化6 - uint转换成二六进制字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

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

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve