进制转化的通用函数(绝对精彩)
//====================================================================
// [FUNCTION] : gf_convertnumsys()
// [RETURNS] : string
// [ARGEMENTS] :
// value integer ai_value 需要转化的10进制数
// value integer ai_how 转化方式(共3种: 2,8,16)
//--------------------------------------------------------------------
// [DESCRIPTION]: 把10进制转化成2,8,16进制(10进制数必须大于零)
//--------------------------------------------------------------------
// [AUTHOR INFO] : DoItNow Date: 2003.05.21
// [MODIFIER INFO]:
//
//--------------------------------------------------------------------
// Copyright (C) saccsoft.com(TM) 2003, All rights reserved
//====================================================================
String two,sixteen,eight //定义三个字符串变量,用来存放最后输出的进制值
String ls_return
Long lentwo,duan,i,j
String aa[50],a[50],b[4]
//====================================================================
// 先把10进制数据通过取余数转换成2进制
// 10进制到2进制的转换是通过取余数实现
//====================================================================
DO WHILE ai_value > 0
two = two + String(Mod(ai_value,2))
ai_value = ai_value / 2
LOOP
//====================================================================
// 选择输出进制
//====================================================================
CHOOSE CASE ai_how
CASE 2
//由于上面得到的2进制的数据方向是相反的:11011101101,所以要通过reverse()函数重新//把它颠倒过来
two = Reverse(two) //得到正确的2进制10110111011
ls_return= two
CASE 8
//2进制到8进制的转换是这样的,从右往左每3位为一个段,即8进制的一位,
lentwo = Len(two) //取2进制的长度
IF Mod(lentwo,3) > 0 THEN //分段
duan = lentwo / 3 + 1
ELSE
duan = lentwo /3
END IF
FOR i = duan TO 1 STEP -1 //由于没有颠倒过来的2进制是从右往左的,所以//分出来的段从左往右就是由大到小
aa[duan] = Mid(two,i * 3 - 2 ,3) //取出每一段的2进制值
a[duan] = '0'
FOR j = 1 TO 3
b[j] = Mid(aa[duan],j,1) //每一段从右往左取值
IF b[j] <> '' THEN
a[duan] = String(Integer(a[duan]) + 2^(j -1 ) * Integer(b[j]))
//按照2^0 * x + 2^1 *x +2^2 * x
//x为分别为从右到左的2进制的值,累加得到每一段的8进制值
END IF
NEXT
eight = eight + a[duan] //8进制段累加得到最后的8进制值
NEXT
ls_return= eight
CASE 16
//16进制的方法如同8进制,只是每4位为一段而已
lentwo = Len(two)
IF Mod(lentwo,4) > 0 THEN
duan = lentwo / 4 + 1
ELSE
duan = lentwo /4
END IF
FOR i = duan TO 1 STEP -1
aa[duan] = Mid(two,i * 4 - 3 ,4)
a[duan] = '0'
FOR j = 1 TO 4
b[j] = Mid(aa[duan],j,1)
IF b[j] <> '' THEN
a[duan] = String(Integer(a[duan]) + 2^(j -1 ) * Integer(b[j]))
END IF
CHOOSE CASE Integer(a[duan])
CASE 10
a[duan] = 'A'
CASE 11
a[duan] = 'B'
CASE 12
a[duan] = 'C'
CASE 13
a[duan] = 'D'
CASE 14
a[duan] = 'E'
CASE 15
a[duan] = 'F'
END CHOOSE
NEXT
sixteen = sixteen + a[duan]
NEXT
ls_return= sixteen
CASE ELSE
END CHOOSE
RETURN ls_return
|
相关推荐
### 十进制转换为其他进制的通用代码解析 #### 概述 本文将详细介绍一个用于实现十进制数转换为二进制、八进制及十六进制的Java程序。该程序通过一个通用的方法`trans`来完成转换工作,并在主方法`main`中调用针对...
例如,你可以创建一个通用的函数,接收一个整数和目标基数作为参数: ```csharp public string ConvertToBase(int number, int baseValue) { if (baseValue || baseValue > 36) { throw new ArgumentException(...
在 Delphi 中,进行进制转换是常见的编程需求,尤其是将10进制转换为16进制。Delphi 自带的 `SysUtils` 单元提供了 `IntToHex` ...此外,还可以考虑将这些函数封装在一个通用的进制转换库中,以便在多个项目中复用。
### SQL脚本函数:16进制转换为10进制 #### 背景介绍 在数据库管理和软件开发过程中,经常需要处理不同进制之间的数值转换问题。尤其是在处理网络协议、加密算法或是数据存储格式时,十六进制与十进制之间的转换...
- HAL库通常不直接提供进制转换的函数,因为这是通用的数学操作,不在其硬件抽象层的职责范围内。然而,我们可以利用C语言内置的函数或者自定义函数来实现。 - `printf` 和 `scanf` 函数:C语言标准库中的`printf`...
在实际编程中,为了增强程序的可读性和复用性,可以封装一个通用的进制转换函数,该函数接受输入数值、源进制和目标进制作为参数,然后根据不同的进制关系进行相应的转换。 总结来说,栈在进制转换中的应用展示了其...
标题中的“16位二进制转化为BCD码”指的是一个功能,该功能能够将16位的二进制数转换为等值的BCD码。16位二进制数的范围是0000000000000000到1111111111111111,对应十进制数的范围是0到65535。在BCD编码中,每四位...
也就是任意输入十进制数字,程序能自动将其转化为另外的数制表示的值,例如: 输入: 130 (十进制) 输出: 10000010 (二进制) 输出: 202 (八进制) 输出: 82 (十六进制) 1、从程序算法的优化程度...
这个特定的进制转化器是使用C++编程语言编写的,并且利用了Microsoft Foundation Classes (MFC)库,这是一个由微软提供的C++类库,主要用于开发Windows图形用户界面应用程序。在本文中,我们将深入探讨C++、MFC以及...
在实际编程中,Python内置的`bin()`, `oct()`, 和`hex()`函数可以直接将十进制数转换为二进制、八进制和十六进制字符串,但它们不支持2到36之间的任意进制。因此,自定义的`decimal_to_n_base`函数在处理这类需求时...
通过这个函数,你可以轻松地在各种进制之间转换。 总之,理解并熟练掌握不同进制之间的转换是每位C#开发者的基本功。通过练习和实践,初学者可以更好地理解这些概念,并将其应用到更复杂的编程任务中。在实际项目中...
它们在执行某些特定功能,如通用函数(GeneralFunctionOfXp.dll)或运行时库支持(如MSVCP60D.DLL和MSVCRTD.DLL)时起作用。 综上所述,这个工具“NumberConvert.exe”可能是用来帮助用户进行复杂的数字转换,尤其...
- 调用 `showbit`, `showoct`, `showhex` 函数,分别显示该整数的二进制、八进制和十六进制形式。 ### 四、代码优化建议 虽然给定的代码能够实现题目要求的功能,但在实际应用中还存在一些可优化的空间: - **格式...
### 数据结构论文设计—进制间的转化 #### 概述 在计算机科学中,不同的进制转换是一项基本而重要的技能。本篇文章将详细介绍如何利用两种常见的数据结构——堆栈(Stack)和队列(Queue)来进行不同进制之间的...
2进制(Binary)是计算机内部存储和运算的基础,所有数据最终都会被转化为二进制形式。16进制(Hexadecimal)则是一种更便于人类阅读的二进制表示方式,因为它将每4位二进制数(1字节)转换为一个十六进制数,简化了...
转化为另外的数制表示的值,例如: 输入: 130 (十进制) 输出: 10000010 (二进制) 输出: 202 (八进制) 输出: 82 (十六进制) 1、从程序算法的优化程度、程序的通用性、程序的规范性来评判; ...
你可以使用这个函数来将十进制数转换为任意进制,例如: ```java int decimal = 42; int customBase = 7; String customBaseString = convertToCustomBase(decimal, customBase); System.out.println...
在C++中,实现这些转换可以定义一个通用的函数,接受基数作为参数。这个函数会创建一个栈,然后对10进制数不断除以基数取余,余数压栈,直到商为0。最后,栈顶元素即为最高位,依次出栈得到结果。 "transData.cpp...
- 将汉字字符串转换为二进制数据,可能用到`WideCharToMultiByte`函数,以获取UTF-8或GBK编码的字节序列。 - 将二进制数据转换为16进制字符串,可能通过遍历字节序列并逐个转换为16进制数字完成。 6. **实践应用*...
6. **进制转化**:`zhuanhua(SqStack &S, int N, int n)`是核心算法,接收十进制整数n和目标进制数N,通过不断将n除以N取余并入栈,直至n变为0,然后依次出栈并输出结果,即可得到N进制表示。 7. **清空栈**:`...