够无聊的写这个,为防止需要的人也无聊一遍,写个吧

算法有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进制-任意进制转换算法的更多相关文章

  1. js模拟栈---进制转化。十进制转任意进制进制,任意进制转十进制

    var Stack = (function(){ var items = new WeakMap(); //先入后出,后入先出 class Stack{ constructor(){ items.se ...

  2. C#十进制与任意进制的转换

    /// <summary> /// 将十进制转换为指定的进制 /// </summary> /// <param name="Val">十进制值 ...

  3. C语言:其他进制转换为十进制(方法二)

    #include<stdio.h> #include<math.h> #include<string.h> #include<ctype.h> //其他 ...

  4. java中十进制转换为任意进制

    次笔试时候遇到的关于十进制转换成十三进制的编程题. 先说说简单的思路吧: 1.十进制数 num 转换为 n进制 num%n结果肯定为n进制数的最后一位 结果存入一个数组中 2.进入一个循环num!=0 ...

  5. 从M进制转换为N进制

    /// <summary> /// 从M进制转换为N进制 /// </summary> internal class MBase2NBase { /// <summary ...

  6. 16进制字符串和byte数组进行相互转换\将10进制转换为任意进制

    16进制字符串和byte数组进行相互转换 简介 1个byte对应8个bit,16进制使用4个bit,所以一个byte转成16进制,占用两位. JAVA代码 private static final c ...

  7. C语言:十进制进制转换为其他进制(思想:查表法)

    // //  main.c //  Hex conversion // //  Created by ma c on 15/7/22. //  Copyright (c) 2015年 bjsxt. A ...

  8. 2~62位任意进制转换(c++)

    进制转换的符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制. 思路是原进制先转换为10进制,再转换到目标进制. 疑问: 对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行进位转换,最 ...

  9. itoa()、atoi()、任意进制转换

    头文件:<stdlib.h> itoa --功能:将任意类型的数字转换为字符串.在<stdlib.h>中与之有相反功能的函数是atoi. atoi----功 能: 将字符串转换 ...

  10. python任意进制转换

    python任意进制转换 import string def module_n_converter(q, s, base=None): """ 将自然数按照给定的字符串转 ...

随机推荐

  1. git学习笔记6

    打标签 git tag -m "Say bye-bye to all previous practice." old_practice //引号里是注释 本地删除不是真的删除,对暂 ...

  2. IE678下,select 诡异的样式

    我没有IE6,我用IE5测试的. IE5下的测试结果:貌似只能设置 width ,设置其他的都失效,连 height 都不例外. IE7下的测试结果:垂直居中失效.边框失效,宽高生效. IE8下的测试 ...

  3. mysql 8 root密码重置

    亲测有效. https://blog.csdn.net/gupao123456/article/details/80766154

  4. PostgreSQL PARTITION 分区表

    PostgreSQL 分区表,操作性相当便捷. 但只能在创建时决定是否为分区表,并决定分区条件字段,普通表创建后,不能在修改为分区表. Note:通过其他方法也可转化为分区表. 和其他数据库一样,分区 ...

  5. [转]TypeScript Quick start

    本文转自:http://www.typescriptlang.org/docs/tutorial.html Quick start Get started with a simple TypeScri ...

  6. C# 多线程系列之Mutex使用

    互斥量是一个内核对象,它用来确保一个线程独占一个资源的访问,并且互斥量可以用于不同进程中的线程互斥访问资源. 我们可以把Mutex看作一个出租车,乘客看作线程.乘客首先等车,然后上车,最后下车.当一个 ...

  7. mybatis学习之入门实例

    测试版本 mybatis:3.2.8 数据库:mysql 项目结构 jar包准备 mybatis-3.2.8.jar mysql-connector-java-5.1.39-bin.jar junit ...

  8. Spring Cloud实战之初级入门(六)— 服务网关zuul

    目录 1.环境介绍 2.api网关服务 2.1 创建工程 2.3 api网关中使用token机制 2.4 测试 2.5 小结 3.一点点重要的事情 1.环境介绍 好了,不知不觉中我们已经来到了最后一篇 ...

  9. java.lang.RuntimeException: Canvas: trying to draw too large(107331840bytes) bitmap.

    环境: Android 8.0.1 MIUI 真机测试闪退 gradle 4.1 compileSdkVersion 26 buildToolsVersion '26.0.2' minSdkVersi ...

  10. mybatis笔记<二> 整合spring

    mybatis与spring整合需要添加几个jar包,mybatis-spring, spring-context, spring-jdbc 1. spring ioc只要一个jar包就ok 2. 我 ...