UDN-企业互联网技术人气社区

板块导航

浏览  : 629
回复  : 4

[原生js] JS 中的进制转换

[复制链接]
王许柔的头像 楼主
发表于 2017-1-6 15:08:35 | 显示全部楼层 |阅读模式
  在 JS 中用到二进制或者16进制的机会并不多,但如果用涉及到与 server 进行 socket 通信,是需要将我们所熟悉的十进制转换成相应的二进制或者16进制。

  Number.prototype.toString(radix)

  JavaScript 提供了很好的方法给我们可以很方便的进行进制转换,其中 radix 是 2-36 之间的基数,即允许我们转换成相应进制的值,如果没有这个值,该方法将默认换数字为字符串。

  现在我们试下几个简单的例子
  1. // 错误的写法
  2. 10.toString()

  3. // 正确的写法
  4. 10..toString()
复制代码

  这里需要注意,当我们直接用数字而非变量时,是不可以直接调用方法 toString。这样会报以下错误:
  1. Uncaught SyntaxError: Invalid or unexpected token
复制代码

  下面我们将列举转换成二进制、16进制的例子
  1. // 二进制
  2. 10..toString(2)     => "1010"

  3. // 8进制
  4. 10..toString(8)     => "12"

  5. // 16进制
  6. 10..toString(16)    => "a"
复制代码

  当我们想要将 8进制或者 16进制转换成10进制或者二进制,不可以直接使用方法 toString,

  由于上面的例子并非补全8进制或者16进制的格式,因而当我们想要将其转换成十进制时,需先补全格式,再进行转换,如以下例子:
  1. // 8进制转换为10进制
  2. 012.toString(10)     => 10

  3. // 16进制转换为10进制
  4. 0x000a.toString(10)  => 10
复制代码

  JS 中的进制转换还是很方便的,对于8进制或者其他进制的数,直接使用时,系统会默认转换为10进制的数字。比如以下例子:
  1. // 8进制相加
  2. 012 + 013 = 21

  3. // 16进制相加
  4. 0x000a + 0x000b = 21

  5. // 8进制和16进制相加
  6. 012 + 0x000b = 21
复制代码

  JS 与 C 或者 C++不同的,它主要以十进制进行运算,对于弱类型语言来讲,进制的重要性虽不那么高,但当我们于 server 进行通信时,需要重点关注一下。

相关帖子

发表于 2017-1-6 15:09:05 | 显示全部楼层
OMG!介是啥东东
使用道具 举报

回复

发表于 2017-1-6 15:09:05 | 显示全部楼层
占坑编辑ing
使用道具 举报

回复

发表于 2017-1-6 15:57:17 | 显示全部楼层
学习
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部