【问题标题】:Why does hex value is returned as a number in javascript为什么十六进制值在javascript中作为数字返回
【发布时间】:2015-11-19 09:33:54
【问题描述】:

我在浏览器控制台中尝试了以下代码。

var testingVar = 0xffff00;

当我访问变量时,它返回值16776960 而不是十六进制值。为什么会这样?我们不能在变量中存储十六进制值吗?

【问题讨论】:

  • 数据!= 表示。
  • 它们是一样的。十六进制不是“值”,而是值的表示。该值为 number 类型。
  • 您可以将十六进制值存储在字符串中。使用parseInt(str, base) 将八进制或十六进制字符串转换为数字。

标签: javascript hex


【解决方案1】:

Javascript 中没有“十六进制值”这样的东西。有字符串和数字。

0xffff00 只是指定数字的另一种语法。默认情况下,控制台将以十进制(以 10 为底)打印数字,这就是您看到 16776960 的原因。

您可以使用 toString 方法使用不同的基数来查看数字的字符串表示形式。

// hex
(0xffff00).toString(16) // "0xffff00"
// decimal
(0xffff00).toString(10) // "16776960"
// octal (for good measure)
(0xffff00).toString(10) // "77777400"

【讨论】:

  • 编程语言中没有“十六进制值”这样的东西
  • @slebetman 一般而言,您的陈述并非适用于每种情况。编程语言最好有一个专门表示十六进制值的专用类型。
  • 当我使用 grunt 网络字体时,我遇到了这个问题,它要求我传递 0xE001,但在 javascript 中我无法传递。
  • @zerkms:是的,但截至 2015 年 11 月,所有现有案例都是如此。将来有人可能会决定这样做,但据我所知(我已经看过在我 15 年的编程生涯中掌握了多种语言)
  • @DimalChandrasiri:它可能希望将该值作为字符串,而不是数字。在这种情况下,它不是一个十六进制值,它是一个字符串 zero, ex, ee, zero, zero, one
【解决方案2】:

您可以在 Javascript 中使用十六进制。

当您需要将八进制或十六进制字符串转换为数字时,请使用函数parseInt(str,base)。考虑这些例子,首先你应该像下面这样定义

var testingVar = '0xffff00';

当你需要时,你可以像下面这样调用:

num = parseInt(testingVar, 16);

【讨论】:

    猜你喜欢
    • 2021-08-31
    • 2011-04-16
    • 2020-03-28
    • 1970-01-01
    • 2016-11-12
    • 2020-07-29
    • 2018-12-06
    • 1970-01-01
    • 2011-02-09
    相关资源
    最近更新 更多