设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: chd114
打印 上一主题 下一主题

[RMXP发布] 【丧心病狂】被玩坏的RMXP之2-10的进制转换互转

[复制链接]

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

1
发表于 2014-7-4 15:18:35 | 显示全部楼层
"abcdef".to_i(16)

ruby内置的东西写那么多,真无聊
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-7-4 15:39:54 | 显示全部楼层
chd114 发表于 2014-7-4 15:38
···任意进制都转了?我这个只是给纯新手用的= =


从2到36皆可互转,比你的更加适合纯新手用(话说纯新手用不到这个吧
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
发表于 2014-7-4 15:52:04 | 显示全部楼层
chd114 发表于 2014-7-4 15:49
36以上怎么破···表示在考虑按C的任意转弄···但你这个只能把10进制的转成其他进制吧?反过来怎么弄 ...

36以上你用什么东西表示……字母都用光了……

16转10: "abcdef".to_i(16)
10转16:123456.to_s(16)
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

4
发表于 2014-7-4 15:59:10 | 显示全部楼层
chd114 发表于 2014-7-4 15:56
36以上的我记得我看到的那个C语言的是用文字来表示还是希腊字母来表示来着··· ...


这是Ruby,不是C
而且这种东西随你怎么表示,转进制什么的还有难度么
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

5
发表于 2014-7-4 16:15:35 | 显示全部楼层
chd114 发表于 2014-7-4 16:14
我只知道特定的进制我可以转出来···但是像11、15、29之类的就不行了··· ...


"abcdefgh".to_i(29) 怎么可能不行
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

6
发表于 2014-7-4 16:24:06 | 显示全部楼层
chd114 发表于 2014-7-4 16:22
具体的原理···我只知道因为2的四次方是16所以可以利用这一点把10位数转成4位2进制数再转16进制··· ...

进制的定义
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

7
发表于 2014-7-4 16:28:23 | 显示全部楼层
chd114 发表于 2014-7-4 16:27
不明觉厉···

C 代码复制
  1. VALUE
  2. rb_fix2str(VALUE x, int base)
  3. {
  4.     extern const char ruby_digitmap[];
  5.     char buf[SIZEOF_VALUE*CHAR_BIT + 2], *b = buf + sizeof buf;
  6.     long val = FIX2LONG(x);
  7.     int neg = 0;
  8.  
  9.     if (base < 2 || 36 < base) {
  10.         rb_raise(rb_eArgError, "invalid radix %d", base);
  11.     }
  12.     if (val == 0) {
  13.         return rb_usascii_str_new2("0");
  14.     }
  15.     if (val < 0) {
  16.         val = -val;
  17.         neg = 1;
  18.     }
  19.     *--b = '\0';
  20.     do {
  21.         *--b = ruby_digitmap[(int)(val % base)];
  22.     } while (val /= base);
  23.     if (neg) {
  24.         *--b = '-';
  25.     }
  26.  
  27.     return rb_usascii_str_new2(b);
  28. }


源码的主要部分在此,自己欣赏吧

点评

围观两位大触版聊  发表于 2014-7-4 16:36
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

8
发表于 2014-7-4 16:38:53 | 显示全部楼层
chd114 发表于 2014-7-4 16:36
什么叫做主要部分···次要部分是指你把开头尾巴去掉了对吧···

主要部分就是指实现转换进制的核心部分

至于次要部分,就是Ruby怎么接收你的参数啊,怎么把数字变成字符啊,之类的东西
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

9
发表于 2014-7-4 19:41:27 | 显示全部楼层
chd114 发表于 2014-7-4 19:37
话说用这种的话我要从16转25是不是还得从16转到10才能再转到25···

to_i 并不是转到10,而只是算出值而已

点评

就是说没法直接这样转咯?  发表于 2014-7-4 19:48
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-6-18 12:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表