[请教]JS进制转换问题...

e98123 2009-05-15 04:04:24
1、初始化随机种子、获取一个1到100以内的随机数,以两位表示不够用0补充,如果3则应表示成03
2、把随机数分解成倒序的2进制7位数,如随机数为3,刚正序为0000101,倒序则为1010000

请问要实现以上的动作,这条函数应该怎么写?
...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
梅子 2009-05-15
  • 打赏
  • 举报
回复
Mark
monexus 2009-05-15
  • 打赏
  • 举报
回复

// 1.
function r(){
var ns = parseInt(Math.random() * 100).toString();
return ns.length < 2 ? '0' + ns : ns;
}
// 2.
alert((1234567).toString(2).split('').reverse().join(''));
wz_307 2009-05-15
  • 打赏
  • 举报
回复
用Math.random()创建一个0~1之间的小数, 之后 * 100, 表明0 ~ 100之间的数, 判断若大于99.0, 则Math.floor()这个数, 否则Math.ceil()成为一个1~99之间的整数.

并不能直接将某个数字直接转二进制. 故而, 新建一个数组, 直接%2 , 将结果push入数组, 这就是逆序的2进制, 之后判断数组长度, 不足7位补0.

思路ok了, 不需要用0来补充.. 如果需要的话, 在第一步末尾toString后判断length, 不足2位, 用0在前面补齐.
lemon520 2009-05-15
  • 打赏
  • 举报
回复
<script>
function test(n){
return ("" + (n + 100)).substring(1);
}
alert(test(11));

function test1(n){
return ("" + (100000000 + parseInt(n.toString(2)))).substring(1);
}
alert(test1(11));

function test2(n){
var tmp = "" + parseInt(n.toString(2));
var v = [0,0,0,0,0,0,0,0];
for(var i=0,j=tmp.length-1; i<tmp.length; i++,j--){
v[i] = tmp.charAt(j);
}
return v.join("");
}
alert(test2(11));
</script>

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧