繁体   English   中英

打包随机字节,反向操作

Packed Shuffle Bytes, reverse operation

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

需要AVX专家:

给出了改组的说明

VPSHUFB ymm1,ymm2,ymm3 / m256

根据文档,此“根据ymm3 / m256的内容在ymm2中随机播放字节”。

我的问题是:是否可以逆转操作,换句话说,知道ymm2和改组的结果,是否可以得到ymm3?

例如vpshufb ymm0, ymm0, ymmword ptr ds:[0x100]

我知道ymm0中已经加载了什么,以及结果,但是我想了解如何获取“控制掩码” ymmword。

1 个回复

是否可以逆转操作,换句话说,知道ymm2和改组的结果,是否可以得到ymm3?

不,通常不是。 如果源数据有一些重复的元素(在通道内),则无法唯一确定混洗控制向量是什么,因为该输出字节可能来自多个位置。

当然,很容易想到可以从该输入创建输出随机播放控件。


当然,如果混洗输入数据在每个16字节通道内都是唯一的,那么可以,您可以唯一确定每个输出元素必须来自的索引。

即使这样,您也只能确定随机播放控件每个字节的低4位 (并且高位未设置,否则vpshufb将输出的该字节vpshufb 。)位6:4对操作完全没有影响。 (请查看手册的“操作”部分: https : //www.felixcloutier.com/x86/pshufb 。随机控制矢量元素的3:0位是源数据矢量的索引。)

混洗控制元素的高位是另一个可能的歧义:如果输入数据包含任何零字节,则输出零可能来自索引该源元素或设置了高位的那个控制元素。


顺便说一句,没有任何说明可以帮助您有效地做到这一点。 如果您做得比一次搜索每个字节1的源位置更好,则使用IDK。 (使用字节广播和vpcmpeqb > vpmovmskb > bsf一次搜索所有16个位置。)

1 Perl打包解压和反向字节顺序

我正在尝试编写脚本以在文本文件中查找十六进制字符串,并将其转换为反向字节顺序。 我遇到的麻烦是某些十六进制字符串是16位,而有些是64位。 我用过Perl的压缩包来打包和解压缩16位十六进制数字,这很好用,但是64位却不能。 我已经尝试使用q和Q(在这里我得到ffffffffffff ...

2 非常大的集合的动态伪随机置换,无需重复和反向操作

我有一个非常大的值集(0-300000 ^ 700),我想找到一个算法,它会在同一个集合中双向分配一个唯一的值。 它相当于一种排列,但由于明显的记忆问题,这必须“在运行中”完成。 并且算法需要在某个时刻反转。 这个问题类似于“巴贝尔图书馆”中的问题: http ://www.fro ...

3 将打包的半字节组合成打包的字节

给定一个或多个__m128i或__m256i ,每个16位元素包含一个半字节,将每个8位元素组合并打包成一个字节的最快方法是什么(即(hi << 4) | lo用于相邻的16位元素) ? 这是我提出的最好的方法,不幸的是与标量代码相当: AVX2之前和之后的说明都是合理 ...

4 用Python打包位和字节

我是Python(我正在使用Python3)和编程的新手。 您能否详细说明如何打包和解包在python中产生答案; 我知道使用这两种功能的语法,但是我不明白答案的计算方式。 例如,我不明白为什么下面的代码: L = struct.pack('f', 255) print([ii for ...

5 打包未对齐的字节

我有一个Perl脚本,它创建一个二进制输入文件,然后将其传递给另一组代码。 二进制输入文件由数百个不同长度的参数组成。 大多数为8位,16位或32位。 我正在尝试将Perl脚本转换为Python,而令我困扰的是一些24位长的参数。 我看了一下这个论坛的帖子 ,它很接近,但不是我所需要 ...

6 打包图像的字节顺序

因此,从http://en.wikipedia.org/wiki/RGBA_color_space ,我了解到在某些解释中,ARGB的字节顺序是从最低地址到最高地址BGRA,在一点字节顺序的机器上。 这如何影响打包数据的命名约定,例如uint8_t ar[]={R,G,B,R,G,B,R, ...

2014-04-25 15:09:25 2 473   c++/ c/ rgb
7 打包到字节(NSData)

我想将MIDI消息打包到NSData对象中。 这非常有效,虽然我为自己感到骄傲,但我知道转换为字节并没有正确完成: 它应该是一个没有大量加法和乘法的直接转换。 怎么办? 编辑:我现在知道我可以这样做 而在Java方面 它会工作,但我想要一个只有3个字节的NSDat ...

9 文件查找操作在写入文件时随机丢失字节

我正在将代码从 python2 移植到 python3。 python2 中的以下代码对 python3 工作正常,除了在将新数据包写入文件时它在前一行末尾写入几个字节的情况。 这导致在从文件中读取数据包时出现 10% 的错误率(python2 中的错误率约为 2%)。 我已经尝试了几种解决方 ...

10 Delphi字节的反向顺序

我一直在尝试编写一个带有两个指针(输入和输出)的函数,并以相反的顺序将输入中的字节写入输出。 到目前为止,我还没能使它正常工作。 任何人都可以建议一个更好的方法来做到这一点。 谢谢。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM