将按位枚举转换为列表



所以,我在节点上使用 osu API 包装器.js我需要将 mods 从按位枚举转换为列表,但我不知道怎么做。

我找到了一个与此相关的主题,但它在 c# 中,但我在 node.js 中需要它。

这些是我需要从位转换回来的列表

{
None           = 0,
NoFail         = 1,
Easy           = 2,
TouchDevice    = 4,
Hidden         = 8,
HardRock       = 16,
SuddenDeath    = 32,
DoubleTime     = 64,
Relax          = 128,
HalfTime       = 256,
Nightcore      = 512, // Only set along with DoubleTime. i.e: NC only gives 576
Flashlight     = 1024,
Autoplay       = 2048,
SpunOut        = 4096,
Relax2         = 8192,    // Autopilot
Perfect        = 16384, // Only set along with SuddenDeath. i.e: PF only gives 16416  
Key4           = 32768,
Key5           = 65536,
Key6           = 131072,
Key7           = 262144,
Key8           = 524288,
FadeIn         = 1048576,
Random         = 2097152,
Cinema         = 4194304,
Target         = 8388608,
Key9           = 16777216,
KeyCoop        = 33554432,
Key1           = 67108864,
Key3           = 134217728,
Key2           = 268435456,
ScoreV2        = 536870912,
LastMod        = 1073741824,
KeyMod = Key1 | Key2 | Key3 | Key4 | Key5 | Key6 | Key7 | Key8 | Key9 | KeyCoop,
FreeModAllowed = NoFail | Easy | Hidden | HardRock | SuddenDeath | Flashlight | FadeIn | Relax | Relax2 | SpunOut | KeyMod,
ScoreIncreaseMods = Hidden | HardRock | DoubleTime | Flashlight | FadeIn
}

好吧,我从一个名为owo的Discord机器人中找到了一个解决方案,基本上使函数从python到节点.js

function numToMod(num) {
let number = parseInt(num)
let mod_list = []
if(number & 1<<0)   mod_list.push('NF')
if(number & 1<<1)   mod_list.push('EZ')
if(number & 1<<3)   mod_list.push('HD')
if(number & 1<<4)   mod_list.push('HR')
if(number & 1<<5)   mod_list.push('SD')
if(number & 1<<9)   mod_list.push('NC')
else if(number & 1<<6) mod_list.push('DT')
if(number & 1<<7)   mod_list.push('RX')
if(number & 1<<8)   mod_list.push('HT')
if(number & 1<<10)  mod_list.push('FL')
if(number & 1<<12)  mod_list.push('SO')
if(number & 1<<14)  mod_list.push('PF')
if(number & 1<<15)  mod_list.push('4 KEY')
if(number & 1<<16)  mod_list.push('5 KEY')
if(number & 1<<17)  mod_list.push('6 KEY')
if(number & 1<<18)  mod_list.push('7 KEY')
if(number & 1<<19)  mod_list.push('8 KEY')
if(number & 1<<20)  mod_list.push('FI')
if(number & 1<<24)  mod_list.push('9 KEY')
if(number & 1<<25)  mod_list.push('10 KEY')
if(number & 1<<26)  mod_list.push('1 KEY')
if(number & 1<<27)  mod_list.push('3 KEY')
if(number & 1<<28)  mod_list.push('2 KEY')
return mod_list
}

最新更新