首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >节点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

复制
相关文章
Java中时间戳的使用
当前时间 import java.sql.Timestamp; //导包 Timestamp nowTime = new Timestamp(System.currentTimeMillis()); System.out.println(nowTime); 输出: 2022-06-08 11:15:51.014 Long型时间戳 Long timeLong = System.currentTimeMillis(); System.out.println("timeString:" + timeLon
代码的路
2022/11/29
1.8K0
如何在python中构造时间戳参数
前面有一篇随笔大致描述了如何在jmeter中生成时间戳,这次继续介绍下在用python做接口测试时,如何构造想要的时间戳参数
冰霜
2022/03/19
2.6K0
如何在python中构造时间戳参数
Golang获取过去或将来某周某月的开始时间戳和结束时间戳
Golang获取过去或将来某周某月的开始时间戳和结束时间戳 开发过程中我们经常需要拿到相对于当前时间过去或将来的某周某月的开始和结束时间戳,下面为大家准备了对应的方法。 1.获取某周的开始和结束时间戳 // 获取某周的开始和结束时间,week为0本周,-1上周,1下周以此类推 func WeekIntervalTime(week int) (startTime, endTime string) { now := time.Now() offset := int(time.Monday - no
用户6786882
2021/11/19
3.3K0
php中的时间戳与javascript中的时间戳的比较
php中的时间戳与javascript中的时间戳的比较,本质上看,它们是一样的东西,但如果二者要进行相等比较的时候,还是有点不同的,稍不注意,就会误入歧途,所以,这里列出容易忽略的两点不同,供大家参考:
风柏杨4711
2021/03/15
3.4K0
api接口的安全设计:使用token+sign+时间戳
服务端以api的方式将数据响应给客户端是目前的趋势,可以用在前后端分离的架构中,前后端分离之后,前后端人员能够更加专注于自己板块的东西,也可以用在服务端与服务端相互调用中。
炒香菇的书呆子
2023/10/03
2.5K0
ffmpeg中的时间戳与时间基
在开发多媒体播放器或直播系统时,音视频的同步是非常关键且复杂的点。要想把音视频同步搞明白,我们必须要了解一些基本的知识。只有了解了这些基本知识,才能为你打下理解音视频同步的基础。 本文将从下面几个主题介绍这些知识点:
音视频_李超
2020/04/02
3K0
ffmpeg中的时间戳与时间基
python中时间、日期、时间戳的转换
1.简介 在编写代码时,往往涉及时间、日期、时间戳的相互转换。 2.示例 # 引入模块 import time, datetime 2.1 str类型的日期转换为时间戳 1 # 字符类型的时间 2 tss1 = '2013-10-10 23:40:00' 3 # 转为时间数组 4 timeArray = time.strptime(tss1, "%Y-%m-%d %H:%M:%S") 5 print timeArray 6 # timeArray可以调用tm_year等 7 prin
kirin
2020/05/16
3.8K0
Java中获取时间戳
** 最近项目开发过程中发现了项目中获取时间戳的业务。而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式。
全栈程序员站长
2022/08/18
2.6K0
时间,时间戳
将如上的时间2016-05-05 20:28:54转换成时间戳,具体的操作过程为:
zhengzongwei
2019/07/31
5.1K0
时间戳 时间
背景 由于团队业务做的是国际项目,就无法避免一个问题--时区问题,很多业务都是跟时间有关。一些时间的对比,时间的展示,都会涉及到时区和时间戳,所以花点时间来简单总结一下 概念 时间戳 时间戳是一个自增的整数,它表示从1970年1月1日零时整的GMT时区开始的那一刻,到现在的毫秒数。假设浏览器所在电脑的时间是准确的,那么世界上无论哪个时区的电脑,它们此刻产生的时间戳数字都是一样的,所以,时间戳可以精确地表示一个时刻,并且与时区无关。 时区 时区(Time Zone)是地球上的区域使用同一个时间定义。188
千往
2018/01/24
5.8K0
[HTML5] Canvas绘制简单形状
使用canvas来进行绘画,它像很多其他dom对象一样,有很多属性和方法,操作这些方法,实现绘画
唯一Chat
2019/09/10
1.1K0
[HTML5] Canvas绘制简单形状
Python获取当前时间戳_时间转换时间戳
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
9.6K0
小技巧 | 如何用python把时间戳如(1511544070)转换成常规时间格式?
由于工作关系,常常遇到时间戳转化的问题。 转换方法用到python的datetime库里的fromtimestamp方法。 第一步:导入datetime库 import datetime 第二步:使用fromtimestamp方法进行转换 x = 1511544070 result = datetime.datetime.fromtimestamp(x) # 输出result为:datetime.datetime(2017, 11, 25, 1, 21, 10) 第三步:再把结果转换成字符串 dateti
朱卫军 AI Python
2022/04/02
1.7K0
sql中时间戳转日期
需求: 我将博客和 typecho 后台结合起来,打算做一个在线说说的功能,在 typecho 中输入内容,然后调用接口,实现在我的博客查看说说功能的功能。是不是有点绕?我也这么觉得,但是折腾一下也挺好的。
子舒
2022/06/09
4.3K0
sql中时间戳转日期
java当前时间的时间戳_java获取当前时间(时间戳)的方法
Calendar.getInstance().getTimeInMillis();
全栈程序员站长
2022/06/28
9K0
java当前时间的时间戳_java获取时间戳和当前时间
Calendar.getInstance().getTimeInMillis();
全栈程序员站长
2022/08/18
8.6K0
Unix 时间戳;时间戳获取和生成
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
西湖醋鱼
2020/12/30
9.2K0
Linux时间戳转换_时间戳转换软件
在大多数 UNIX 系统中,当前时间存储为自特定时刻以来经过的时间以简化,将时间保持为长整数。所有 UNIX 系统普遍接受的时刻是 1970 年 1 月 1 日凌晨 12:00:00。 这称为 UNIX 时间戳,并被所有现代 UNIX/Linux 系统识别。
全栈程序员站长
2022/11/09
15.7K0
Linux时间戳转换_时间戳转换软件
Python获取时间戳_python爬虫时间戳
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/189145.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
5.9K0
点击加载更多

相似问题

获取将来的时间戳

60

是否可以使用Tradingview api绘制模式(XABCD)?

167

如何在tradingview上的自定义变量系列上绘制形状

119

如何在matplotlib中绘制时间戳(毫秒)

18

如何在Matlab中绘制奇怪的时间戳

35
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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