gpt4 book ai didi

javascript - 这种在 JavaScript 中保存真/假选项的方法有效吗?

转载 作者:行者123 更新时间:2023-11-28 21:21:25 25 4
gpt4 key购买 nike

在某些地方,您会看到保存为数字的选项。例如,在设置文件权限时,您可以为每组用户使用 0 到 7 范围内的值来传递它们。该数字的二进制表示形式中的每一位代表三种权限之一:读、写和执行,因此值为 7,二进制表示形式为 111 意味着该文件可以读、写和执行,而值 5 意味着该文件只能读取和执行,因为二进制表示形式为 101。

旁注:我不是操作系统如何管理文件的专家;我的解释可能是错误的,但我确信代表这些选项的二进制数的基本思想是在那里实现的。

我现在想知道使用 JavaScript 以二进制形式存储 true/false 选项是否有效。为此,我将创建 JavaScript,如下所示:

function OptionsGenerator(){
//this method takes a number, and returns an array of options.
this.num2options = function(num){
var str,len,opts=[];
if(typeof num !== "number") return false;
str = num.toString(2);
len = str.length;
for(var i=0;i<len;i++){
opts[i] = (str.charAt(i)==="1") ? true : false;
}
return opts;
}
//this function gets an array of options, and returns a number.
this.options2num = function(opts){
var str = "",o,opt;
for(o in options){
opt = (options[o]) ? 1 : 0;
str+=opt;
}
return parseInt(str,2);
}
//this function returns a specific option with an index ranging from 1 to the number of options set. takes 2 arguments: the first one is the set of options. This can either be a number or a string containing a binary representation of the number, the second parameter contains the index of the option.
this.getOption = function(num,optnum){
var str;
if(typeof num === 'number')
str = num.toString(2);
else
str = num;
return (num.charAt(optnum-1)==="1");
}
}

我的问题是:这是保存选项的有效方法吗?如果是,是否有更有效的方法从二进制转换为数字,并获取特定选项或所有选项?

最佳答案

如果您想在 JavaScript 中完成类似的事情,我建议您实际使用按位运算符,即 & 和 |。

例如:

var read = 1;
var write = 2;
var execute = 4;

var rw = read | write;

var someUserPermission = 3; // or, var someUserPermission = read & write;

// can read?
console.log((someUserPermission & read) === read); // => true
console.log((someUserPermission & write) === write); // => true
console.log((someUserPermission & execute) === execute); // => false

关于javascript - 这种在 JavaScript 中保存真/假选项的方法有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6254530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com