lua之m进制转换为n进制-任意进制转换算法
够无聊的写这个,为防止需要的人也无聊一遍,写个吧
算法有n种,但是,咱们一种就够用了
--数组倒序排列
local function orderByDesc( input )
local output = {}
local count = #input
while count > do
table.insert(output, input[count] )
count = count -
end
return output
end --进制转换,英文不行只好用拼音
--@dec 10进制数据,好吧,只要是数字就呆以了
--@x 进制,最常见的当然是二、八、十六、进制
local function _Dec2X( dec, x )
--计算结果存储在这里
local new_number = {} --算法如下:
--9527 = 9*(10^3)+5*(10^2)+2*(10^1)+7*(10^0)
--7 = 9527%10, 2 = (9527-7)%100/100
--f(n) = (dec % (x^i) - f(n-1))/x
--f(0) = 0
--a参数代表第几位,返回是否继续
local function f( a )
assert(a >= )
local mod = dec % math.pow(x, a)
local last_mod = (a == ) and or assert(new_number[a-])
new_number[a] = (mod - last_mod)/math.pow(x, a - )
--取整数部分
new_number[a] = math.modf(new_number[a])
return mod ~= dec
end
--该函数取得某位值
local i =
while f(i) do
i = i +
end return new_number
end --将某个数据转成X进制
--以 9527,10进制为例,{7, 2, 5, 9}
local function _numberTable2X( number_tbl,x )
local result =
for i,v in ipairs(number_tbl) do
print(result,x, i, v)
result = result + v*math.pow(x, i - )
end
return result
end local function test_Dec2X ()
local kTestNumber =
local n1 = _Dec2X(kTestNumber, )
-- table.foreach(n1, function ( _,v )
-- print(v)
-- end)
assert(kTestNumber == _numberTable2X(n1, ))
end
test_Dec2X()
lua之m进制转换为n进制-任意进制转换算法的更多相关文章
- js模拟栈---进制转化。十进制转任意进制进制,任意进制转十进制
var Stack = (function(){ var items = new WeakMap(); //先入后出,后入先出 class Stack{ constructor(){ items.se ...
- C#十进制与任意进制的转换
/// <summary> /// 将十进制转换为指定的进制 /// </summary> /// <param name="Val">十进制值 ...
- C语言:其他进制转换为十进制(方法二)
#include<stdio.h> #include<math.h> #include<string.h> #include<ctype.h> //其他 ...
- java中十进制转换为任意进制
次笔试时候遇到的关于十进制转换成十三进制的编程题. 先说说简单的思路吧: 1.十进制数 num 转换为 n进制 num%n结果肯定为n进制数的最后一位 结果存入一个数组中 2.进入一个循环num!=0 ...
- 从M进制转换为N进制
/// <summary> /// 从M进制转换为N进制 /// </summary> internal class MBase2NBase { /// <summary ...
- 16进制字符串和byte数组进行相互转换\将10进制转换为任意进制
16进制字符串和byte数组进行相互转换 简介 1个byte对应8个bit,16进制使用4个bit,所以一个byte转成16进制,占用两位. JAVA代码 private static final c ...
- C语言:十进制进制转换为其他进制(思想:查表法)
// // main.c // Hex conversion // // Created by ma c on 15/7/22. // Copyright (c) 2015年 bjsxt. A ...
- 2~62位任意进制转换(c++)
进制转换的符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制. 思路是原进制先转换为10进制,再转换到目标进制. 疑问: 对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行进位转换,最 ...
- itoa()、atoi()、任意进制转换
头文件:<stdlib.h> itoa --功能:将任意类型的数字转换为字符串.在<stdlib.h>中与之有相反功能的函数是atoi. atoi----功 能: 将字符串转换 ...
- python任意进制转换
python任意进制转换 import string def module_n_converter(q, s, base=None): """ 将自然数按照给定的字符串转 ...
随机推荐
- selenium+Python(文件下载)
webdriver允许我们设置默认的文件下载路径,也就是说,文件会自动下载并保存到设置的目录中 下面以Firefox浏览器为例: from selenium import webdriver from ...
- 【ExtJS】关于标准模块化封装组件
在此之前,自己封装自定义控件用的是这样的方式: Ext.define('My.XXX',{ extend: 'Ext.YYY', xtype: 'ZZZ', . . . items:[ ... ] } ...
- 【ExtJS】简单布局应用
前几天学习了ExtJS的各种布局后,以下就是各种实践,从简单做起. 实现目的: 一个提交表单页,一个显示信息页,表单为个人基本资料输入,显示页为基本信息展示. 内容: 总体布局为border布局,展示 ...
- java多线程开发,Executors、FutureTask、Callable
java多线程如何应用呢,几乎学java的同学都知道Thread类和Runable接口.继承Thread类或者实现Runable接口,调用thread的start方法即可启动线程. 然后是线程池,就是 ...
- DIV+CSS常见面试题
1.!important拥有最高的优先级,几乎所有浏览器都支持!important,除了IE6(不完全支持) 例1(IE6支持,颜色为#e00): .cssClass{color:#e00!impor ...
- 周记4——vue中动态添加图片无效、build上线后background-image路径问题
又是一个周五,又一周要过去了...很开心,这周遇到了vue中的一个比较常见的坑,网上随便一搜就有了很多解决方案...“幸运”的是,我选了一个带坑的方案...所以我觉得有必要记录一下这个“坑中坑”... ...
- rest webapi 返回数据
webapi可以直接返回一个对象,也可以返回json 一.返回一个对象例子 [System.Web.Mvc.AllowAnonymous] [System.Web.Http.HttpGet] publ ...
- centos 中输入ifconfig 只有lo 没有eth0
问题描述:linux中输入ifconfig命令,只有lo,没有eth0 解决方法: 1.进入/etc/sysconfig/network-scripts 目录,发现有ifcfg-eth0,即网卡(驱动 ...
- 快速删除node_modules目录
当node项目需要重新安装依赖,并且需要删除原有的node_modules目录时,windows下删除该目录比较麻烦的,所以我就在网上找了个npm包,名字叫做 rimraf 安装步骤: npm ins ...
- Luogu3403: 跳楼机
题面 传送门 Sol 有一个显然的想法 处理出\(y, z\)能凑出的高度 然后这些高度凑一些\(x\)就可以得到其它的高度 那么可以把这些\(y, z\)凑出的高度对\(x\)取模,其它的用\(x\ ...