首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >节点XOR两个不等大小数组未定义XOR的行为

节点XOR两个不等大小数组未定义XOR的行为
EN

Stack Overflow用户
提问于 2021-07-27 08:34:52
回答 1查看 114关注 0票数 1

考虑NodeJS中的以下示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let ar1 = new Uint8Array([1,2,3,4])
let ar2 = new Uint8Array([1,2,3,4,5,6,7,8])
for (var i = 0; i < 8; i++) {
    console.log(ar1[i] ^ ar2[i]);
}

我使用的是Node 12.22.1版本,上面的代码输出如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0
0
0
0
5
6
7
8

在这里,我们看到超出一个数组界限的XORing元素只会导致另一个数组中元素的值。

仔细观察,我们发现ar1[5] === undefinedtrue。此外,undefined ^ 5 === 5也是真(从技术上讲是一个非零值)。因此,假设undefined XOR与Node中的任何内容一起生成原始值是安全的吗?

在上下文中,我试图异或两个大小不同的Uint8Arrays。最简单的实现是找到数组和XOR每个元素的最大长度,将结果存储到列表中。这是可行的,但我对依赖任何undefined来产生可靠的行为持怀疑态度。我可以添加额外的代码,以确保不发生越界访问,但我想知道这在Node中是否必要。我还想知道,在其他JavaScript运行时环境中,特别是在web浏览器中,相同的代码是否会可靠地运行。

下面是我在本例中编写的简单的XOR数组代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private static xorArrays(array1: Uint8Array, array2: Uint8Array): Uint8Array 
{
    let length = array1.length > array2.length ? array1.length : array2.length;
    let result = new Uint8Array(length);
    for (let i = 0; i < length; i++) {
        result[i] = array1[i] ^ array2[i];
    }
    return result;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-27 08:48:56

因此,假设未定义的XOR与Node中的任何内容一起生成原始值是安全的吗?

undefined ^ xx的原因是当您尝试将undefined转换为一个数字(例如+undefined)时,NaN

在按位运算符中,NaN在转换为32位整数(按位运算符根据执行)后,作为0操作。这可以在~NaNNaN >> 05 << NaN等方面看到。规格说明实际上指定在VM级别上,ToNumeric(undefined)给出(间接) NaN。我找不到任何规范提到为什么NaN在位运算符中表示0,所以这可能与VM有关。

对于用例,您可以简单地使用array[i] || 0,其中undefined (和0)将是错误的,因此“默认”为0。然后,您就会知道它将如何运行,而不是依赖于undefined中奇怪的按位运算符的行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68548728

复制
相关文章
MySQL日期类型选择
MySQL提供的常用日期类型有DATE,TIME,DATETIME,TIMESTAMP,
秋白
2019/02/21
3.1K0
MySQL索引选择规划
通过explain的执行结果我们可以看出,上面的SQL语句并没有走我们的索引a,而是直接使用了全表扫描。
shysh95
2022/02/16
1K0
MySQL索引选择规划
Mysql分支选择:Percona Or MariaDB
本文将对MySQL官方版本以及最流行的两个分支:MariaDB 和 Percona Server进行对比介绍。笔者曾经遇到过一些同学,在可能在一个公司待了可能几年了,问他公司用的数据库是什么,他只能回答出,使用的是Mysql。当问到只是用的官方版本,或是哪一个分支时,他就一无所知了。本文将介绍这些分支产生的原因,以及在实际生产中,应该如何进行选择。并不会进行过多细节介绍,算是一个小科普。
田守枝
2019/05/21
9.8K0
Mysql分支选择:Percona Or MariaDB
MySQL时间函数的选择
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
bisal
2019/10/22
2.3K0
MySQL 选择数据库
在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。 ---- 从命令提示窗口中选择MySQL数据库 在 mysql> 提示窗口中可以很简单的选择特定的数据库。你可以使用SQL命令来选择指定的数据库。 实例 以下实例选取了数据库 test: [root@host]# mysql -u root -p Enter password:****** mysql> use test; Database changed mysql> 执行以上命令后,你就已经成功选择了 tes
福贵
2018/04/12
2.1K0
MySQL 选择数据库
如何为 MySQL 选择 CPU?
MySQL 服务器性能受制于整个系统最薄弱的环节,承载它的操作系统和硬件往往是限制因素。磁盘大小、可用内存和 CPU 资源、网络,以及所有连接它们的组件,都会限制系统的最终容量。
博文视点Broadview
2020/11/30
1.2K0
如何为 MySQL 选择 CPU?
mysql存储过程---选择结构
关键字DECLARE,下列语句声明变量名为num的int类型的变量长度为10,[ default 0 代表默认值为0,可以不写]。
用户5899361
2020/12/07
9200
MySQL 选择数据库
在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。
用户1685462
2021/07/16
1.6K0
MySQL 选择数据库
在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。
用户6884826
2021/07/07
1.6K0
基础 | 前端图片选择问题
作者|observernote 原文|http://www.cnblogs.com/observernotes/p/4806218.html 图片问题的一些总结 前言: 之前个人对于图片的问题,一直还是显得不是很重视。但其实对于互联网来说,可能图片的内容已经占据了整个互联网的大半部分,因此我们很大一部分流量的消耗,都是用在了图片上面,因此,对于图片有一些认识肯定是现在所必须的。所以趁今天这个不太忙的机会,打算对于图片的问题做一个简单地总结,也算是对之前没掌握到的东西的一个学习与备忘过程。 常见的图片格式
用户1097444
2022/06/29
6120
基础 | 前端图片选择问题
mySql问题
SELECT DATA_LIST.* ,CAST((@rowNum:=@rowNum+1) AS CHAR) AS ROWNO FROM (
斯文的程序
2019/11/07
8030
mySql问题
mysql问题
在使用 MySQL 8.0 时重启应用后提示 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed
用户10325771
2023/03/01
4290
mysql数据类型的选择
如果不需要小数部分,就是用整数来保存数据;如果需要小数部分,就是用浮点数。对于浮点数据列,存入的数值会对该列定义的小数位进行四舍五入。 浮点类型包裹FLOAT和DOUBLE类型,精度要求较高时,使用DOUBLE类型。
别团等shy哥发育
2023/02/25
1K0
MySQL如何选择合适的索引
小强前几篇文章介绍了mysql的索引原理以及sql优化的一些小技巧。mysql底层的算法选择哪种索引,有时候会和我们想象的不一样,大家可以继续往下看。
程序员小强
2019/09/06
4.1K0
MySQL如何选择合适的索引
关于Uber选择MySQL的思考
在数据库圈子,大家都知道2016年 Uber 干出来一件大事件,把 PostgreSQL 切换到了 MySQL,当时社区里一阵喧哗。这里想带着大家思考一下选择的背后。
wubx
2019/02/27
7640
关于Uber选择MySQL的思考
MongoDB 与 MySQL,你选择谁?
过去几年,使用NoSQL数据库的网站和应用数量激增。 MongoDB无处不在。 现代网络如何偏离传统的基于SQL的数据库确实令人着迷。 MongoDB和其他NoSQL数据库在存储和检索数据方面有一种新方法。 那么让我们来看看MongoDB与MySQL不同的一些关键因素。
星哥玩云
2022/08/17
2.2K0
MongoDB 与 MySQL,你选择谁?
【MySQL高级】Mysql锁问题
在数据库中,除传统的计算资源(如 CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
陶然同学
2023/02/24
1.6K0
【MySQL高级】Mysql锁问题
mysql—如何为innodb选择主键
因为在innodb表中,每一个非主键索引的叶子节点上都会存储主键列的信息, 所以如果主键索引太大,会导致其他非主键索引页变大, 降低索引的查询效率
全栈程序员站长
2021/04/07
4.3K0
mysql 事务隔离级别如何选择
数据丢失,两个事务同时进行,一个成功一个失败,造成数据回滚,或者两个都成功造成数据覆盖
海涛
2020/01/15
1.5K0
MYSQL死锁问题
如果insert或update用到了同样的索引也会造成死锁。 比如 update table_a set name = ‘test1’ where id = 300; //用到了table_a的id主键索引 insert into table_b (a_id,`name`) (select id,name from table_a where id >=200) ON DUPLICATE KEY UPDATE a_id = values(a_id)//同样用到了table_a的id主键 所以会导致
苦咖啡
2018/04/28
1.6K0

相似问题

关于更改多端口VLAN分配的问题

10

路由器端口分配如何不耗尽

20

基于交换机端口分配IP地址

30

为不同的VLAN分配一个开关端口

20

如何将多个VLANS分配给一个端口?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文