将十六进制值分解为CoffeeScript中的多行

时间:2013-04-05 09:06:59

标签: coffeescript hex

如何在Coffeescript中打破长十六进制值以使其跨越多行?

authKey = 0xe6b86ae8bdf696009c90e0e650a92c63d52a4b3232cca36e0ff2f5911e93bd0067df904dc21ba87d29c32bf17dc88da3cc20ba65c6c63f21eaab5bdb29036b83

类似

authKey = 0xe6b86ae8bdf696009c90e0e650a92c63d52a4b323\
          2cca36e0ff2f5911e93bd0067df904dc21ba87d29c3\
          2bf17dc88da3cc20ba65c6c63f21eaab5bdb29036b83

使用 \ 会导致意外的'NUMBER'错误, 在意外的'INDENT'中使用换行符 错误

2 个答案:

答案 0 :(得分:1)

在CoffeeScript中执行此操作实际上没有意义,因为数字存储为64位IEEE 754值,并且您有太多精度值,无法将值存储为数字。

如果你写

authKey = 0xe6b86ae8bdf696009c90e0e650a92c63d52a4b3232cca36e0ff2f5911e93bd0067df904dc21ba87d29c32bf17dc88da3cc20ba65c6c63f21eaab5bdb29036b83
console.log(authKey)

然后记录的值是

1.2083806867379407e+154

您希望将authKey存储为字符串或字节数组,这两者都可以跨多行写入。

答案 1 :(得分:0)

就像其他人所说的那样,存储在数字中并没有真正意义,而不是字符串;但是,无论如何,我决定把它放在一起以允许它:

stringToNumber = ( str ) -> parseInt( str.replace( /\n/g, '' ) )

authKey = stringToNumber """
  0xe6b86ae8bdf696009c90e0e650a92c63d52a4b323
  2cca36e0ff2f5911e93bd0067df904dc21ba87d29c3
  2bf17dc88da3cc20ba65c6c63f21eaab5bdb29036b83
"""

就像雷说的那样,这只会导致:

1.2083806867379407e+154