二进制数的妙用

  最近遇到了这么一个问题: 如何解析一个二进制计算得来的十进制并使用,场景是这样的: 一个购物平台, 商家可以发布商品(在商家APP中), 并选择他可以接受的支付方式,如线下支付、支付宝、微信、银联以及我的钱包支付。如果选择了使用前面三者支付,那么后端就会传来00111这个二进制表示的十进制7, 如果这五种方式都是支持的,那么后端会传来11111这个二进制表示的十进制31,然后前端需要将这三种支付方式显示在页面上,并且如果用户选择了支付宝支付,那么前端向后台传参数2, 如果用户选择了使用微信支付,那么前端向后台选择传递4,这个很容易理解,即1代表有,0代表无。 但是我这边应该怎么操作呢?

(31).toString(2).split("").map(function (value) { return Number(value) });
[1, 1, 1, 1, 1]

这样,我们就可以根据这个数组中的值是否为1来决定是否显示相应的支付方式了,当用户选择了相应的值后,我们可以根据其index值来使用2的index次方来传递。

  

时间: 2024-10-03 03:59:30

二进制数的妙用的相关文章

C#实现任意大数的计算和简单逻辑命题的证明——BigNumber

介绍 在前言中粗略地展示了MathAssist的“计算和证明”能力,本篇开始将详细介绍其实现原理. 从计算开始说起,要实现任意大数的计算器首先得有一个类支持大数运算,于是本篇介绍BigNumber的实现.一般编程语言提供的数字类型都是基于cpu位数来实现,这样做是为了在基础类型上保证运算速度. 想当年本人刚开始学vb6(也是刚开始学程序)时, 想用这个圆周率公式来精确到小数点后上万位,可结果好像是在小数点后7.8位就无法再精确了. 稍微想下就可明白原因——所使用的float类型本身就只提供小数点

《众妙之门——精通CSS3》一书知识点剖析

不得不佩服京东的速度,昨天刚下单的两本书今天上午就到了.其中一本是全彩页的<众妙之门 - 精通CSS3>,细看了前几十页,书上的叙述方式给我的印象其实不如“彩页”来的讨喜——接连说上几个例子,扔个例子的链接(没源码下载,要自己手动输入,而且近乎所有的例子页面均已失效),未经细剖便草草了事,感觉倒是适合作为厕所读物(汗).... 虽然书中不细剖,却也不能白花银子,不妨自己实打实地查资料.记笔记,不辜负了早上送出的老毛. P21 此处提到的例子动用了 -webkit-background-clip

System center 2012 R2 实战十、妙用SCO+SCOM实现声音告警

SCOM默认支持邮件告警,即时消息告警,短信告警,那么如果要实现声音告警,应该如何实现呢?大家可以好好思考一下,需求就是SCOM产生警报,同时触发声音告警+短信告警+邮件报警. 当时第一个想到的是Live Maps,Live Maps是一个单独的收费产品,通过Live Maps可以很好地与SCOM进行集成,还可以实现移动终端的声音告警,也可以做一套流程,比如说满足什么样子的条件,那些指定的服务器,去触发Sound声音插件,还可以实现地图展示,Live Maps有很多诱人的功能 产品地址如下 ht

as 的妙用

个人理解:as跟is is 相当于判断里的“==” 是与否 if(e.OriginalSource is Button) as 一般用来转换另一种object e.OriginalSource as Button 来获取相关属性或值 e.OriginalSource as RadioButton).Name.ToUpper() as和is的出现 一般是在路由事件中,需要通过这两个关键字来互交动态生成的不同类型或属性不同的UI控件 比如通过for生成按钮 for(int i = 0;i<10;i+

90%的卖家不知道,eBay销量爆涨有妙招!

说到提升销量,可能大部分卖家脑海里闪现的都是跟卖.优化.推广--,其实方法远远不止这些,今天小编讲讲不为人熟知的几种eBay销量爆涨妙招,希望对卖家们有所帮助. 1.UPC要好好利用 在eBay上,相同产品码的listing,是可以和Reviews共享客户的,而我们商家恰好可以利用这一点,借此找到那些Reviews数量多.质量好的listing,而如果它有产品码,而商家与该产品是同款,那我们也可以将产品码利用起来. UPC码正规渠道购买价格较高,如果是eBay用,商家可以去万能的某宝上购买,价格

二进制数递归列举

问题1:给定一个正整数 n,列举出所有的位数为 n 的二进制数 这里采用递归列举所有的数. public class Satchel { // 自定义打印函数 public static void printf(int[] arr) { int len = arr.length; int i = 0; for (; i < len-1; i++) { System.out.print(arr[i]); } System.out.println(arr[i]); } public static v

转---深入浅出妙用 Javascript 中 apply、call、bind

作者:伯乐在线专栏作者 - chokcoco 如有好文章投稿,请点击 → 这里了解详情 如需转载,发送「转载」二字查看说明 这篇文章实在是很难下笔,因为网上相关文章不胜枚举. 巧合的是前些天看到阮老师的一篇文章的一句话: "对我来说,博客首先是一种知识管理工具,其次才是传播工具.我的技术文章,主要用来整理我还不懂的知识.我只写那些我还没有完全掌握的东西,那些我精通的东西,往往没有动力写.炫耀从来不是我的动机,好奇才是." 对于这句话,不能赞同更多,也让我下决心好好写这篇,网上文章虽多,

C++运算符重载的妙用

运算符重载(Operator overloading)是C++重要特性之中的一个,本文通过列举标准库中的运算符重载实例,展示运算符重载在C++里的妙用.详细包含重载operator<<,operator>>支持cin,cout输入输出.重载operator[],实现下标运算.重载operator+=实现元素追加:重载operator()实现函数调用.假设你对C++的运算符重载掌握的游刃有余.那就无需继续往下看了. 运算符重载带来的优点就是--让代码变得简洁.以下将展示几个标准库因使

深入浅出 妙用Javascript中apply、call、bind

apply.call.bind的认识,并且列出一些它们的妙用加深记忆. apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念. 先来一个栗子: 1 2 3 4 5 6 7 8 9 10 11 function fruits() {} fruit