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

Project1

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

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

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

11
 楼主| 发表于 2014-7-4 16:14:49 | 只看该作者
taroxd 发表于 2014-7-4 15:59
这是Ruby,不是C
而且这种东西随你怎么表示,转进制什么的还有难度么

我只知道特定的进制我可以转出来···但是像11、15、29之类的就不行了···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

12
发表于 2014-7-4 16:15:35 | 只看该作者
chd114 发表于 2014-7-4 16:14
我只知道特定的进制我可以转出来···但是像11、15、29之类的就不行了··· ...


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

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

13
 楼主| 发表于 2014-7-4 16:22:49 | 只看该作者
taroxd 发表于 2014-7-4 16:15
"abcdefgh".to_i(29) 怎么可能不行

具体的原理···我只知道因为2的四次方是16所以可以利用这一点把10位数转成4位2进制数再转16进制···像29这些就不知了···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

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

进制的定义
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

15
 楼主| 发表于 2014-7-4 16:27:13 | 只看该作者
taroxd 发表于 2014-7-4 16:24
进制的定义

不明觉厉···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

16
发表于 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
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

17
 楼主| 发表于 2014-7-4 16:36:50 | 只看该作者
taroxd 发表于 2014-7-4 16:28
VALUE
rb_fix2str(VALUE x, int base)
{

什么叫做主要部分···次要部分是指你把开头尾巴去掉了对吧···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

18
发表于 2014-7-4 16:38:53 | 只看该作者
chd114 发表于 2014-7-4 16:36
什么叫做主要部分···次要部分是指你把开头尾巴去掉了对吧···

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

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
108 小时
注册时间
2013-12-11
帖子
378
19
发表于 2014-7-4 19:26:47 | 只看该作者
用Python可以更容易地做到= =曾经无聊做过
我是拘束,我为自己代言,并为自己带盐,并喂自己袋盐!
咳...齁死我了...
小学生党。来自SHADE。
活跃在水世界(活跃吗)(在水世界有个毛用啊)
表示对RM橙光神马的完全不熟悉......
虽然我还是在用吧......
完。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

20
 楼主| 发表于 2014-7-4 19:28:15 | 只看该作者
jspython 发表于 2014-7-4 19:26
用Python可以更容易地做到= =曾经无聊做过

比如说?

点评

什么比如说。。自己写的代码,没找到有什么函数可以用。。。我只是觉得我的行数比你少而已= =  发表于 2014-7-4 19:30
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-18 05:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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