65.9K
CodeProject 正在变化。 阅读更多。
Home

二进制、八进制、十进制和十六进制数字系统之间的转换

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.16/5 (10投票s)

2007 年 6 月 4 日

2分钟阅读

viewsIcon

89993

downloadIcon

1168

二进制、八进制、十进制和十六进制数字系统之间的转换。C 代码可供下载。

引言

你是否曾经需要将数字在不同的数字系统之间进行转换?C 语言中没有内置函数来以二进制显示数字,或者将八进制数解析为其整数等价物。 在本文中,我将介绍我编写的一些函数,用于此目的。

背景

很多时候我需要以二进制形式显示一个数字,或者将一个二进制字符串解析为其等效字符串。 同样,对于其他数字系统,我也没有找到标准的通用方法。 因此,我决定编写自己的代码。 事实上,这些代码很简单。 但可以肯定地节省时间,当你不想浪费时间编写以二进制形式(或其他格式)显示数字的代码时。

使用代码

我已经编写了 8 个函数,用于在所有数字系统表示之间进行解析和格式化。 4 个用于将 4 个数字系统字符串表示解析为其整数等价物,另外 4 个用于从整数等价物格式化字符串。 可以使用任何组合来进行从一个数字系统的字符串表示到另一个数字系统的字符串表示的转换。

解析函数是:-

int parseBin(char* bin);

int parseOct(char* oct);

int parseDec(char* dec);

int parseHex(char* hex);

格式化函数是:-

char* formatBin(int bin);

char* formatOct(int oct);

char* formatDec(int dec);

char* formatHex(int hex);

我在这里详细讨论其中两个函数。

int parseBin(char* bin) 将二进制字符串 bin 解析为其整数等价物。 要将二进制数字字符串 "1001" 解析为其等效整数 -

printf("%d\n", parseBin("1001"); 

char* formatHex(int hex) 将整数 hex 格式化为其十六进制字符串表示。 要将数字 255 格式化为其十六进制字符串表示 -

printf("%s\n", formatHex(255)); 

可以使用函数的任何组合来进行各种数字系统字符串表示之间的可能转换。

printf(formatBin(parseHex("3f8")); 

formatHex() 以大写形式输出。 要以小写形式输出,还有另一个函数;formatHexL()

关注点

我制作了一个可以在命令行中在任何数字系统之间进行转换的应用程序。 源代码包含在 zip 文件中。 该应用程序名为 conv_type。

示例: conv_type 0 3 1111

输出:FF

讨论:conv_type 输入系统 输出系统 数字

0 = 二进制

1 = 八进制

2 = 十进制

3 = 十六进制

历史

本文是它的第一个版本。

© . All rights reserved.