问题标签 [byte-shifting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 交换 2 个字节的整数
我有一个接收 3 个参数的方法:int x、int n 和 int m。它返回一个交换了 x 的第 n 个和第 m 个字节的 int
x 只是一个普通整数,设置为任何值。n 和 m 是 0 到 3 之间的整数。
例如,设 x 的十六进制表示为 0x12345678,n 为 0,m 为 2。最后一个和倒数第三个字节应该是交换的(n = 78,m = 34)。
我已经弄清楚如何从 x 中提取第 n 个和第 m 个字节,但我不知道如何将所有 4 个字节重新组合成该方法应该返回的整数。
这是我当前的代码:`
`
还有一些额外的限制 - 只允许以下内容:
~ & ^ | ! + << >>
(这意味着没有- * /
,循环,if
s等。但是,可以初始化其他变量并且添加仍然可以。)
我的代码可以提取第 n 个和第 m 个字节,但我不知道如何在不使用 ifs 的情况下重组所有内容。
assembly - MIPS - 将寄存器值移位一个数值
谁可以给我解释一下这个?问题是:
目标是在操作后找到 $t2 的值。初始值为:
我了解“sll $t2, $t0, 44”的伪代码翻译是:
并且 t0 和 t2 的二进制表示是:
但是如何移动 44 位呢?我认为一个值开始时只有 32 位。如何通过将 $t0 移动 44 位来找到 $t2 的值?
java - Java bit unsigned shifting (>>>) give strange result
I have this code:
But I can't understand how it works. I think that unsigned shifting to 255(11111111)
should give me 127(0111111)
but it doesn't. Is my assumption wrong?
python - 使用python读取十六进制文件中的多个字节
我有一个十六进制文件,如下所示:-
我想读取第 3 和第 4 个字节。交换这两个字节并将它们保存在一个变量中。例如,我想在变量“num”中保存 0xFF11(字节交换后)
这就是我尝试过的:我一个一个地读取这两个字节
现在的问题是 num 变量具有整数值,我不知道如何将十六进制放入其中。我被困在这里,无法继续前进。欢迎任何帮助。
PS:我对python很陌生。
c++ - 将两个半字节打包成一个字节的最快方法
将两个字节打包成一个的最快方法是什么?我有大量的字节。每个字节代表一个不大于 15 的数字(4 位数字)。因此,我可以将两个字节打包成一个字节,将第一个字节放入高半字节,然后将后半字节放入低半字节。
我目前的方法是创建一个原始数组一半大小的第二个数组,然后迭代原始数组并移动它和 | 得到小食。这可行,但是需要一段时间,具体取决于数组的大小。数组从几千个条目到几百万个。这不是灾难性的,但任何优化都会有所帮助
c - 从字节中检索位
嘿,所以我想知道是否有人可以解释它是如何工作的,我必须从一个字节中检索第三位,它是一个布尔值,我对它的实际工作原理感到困惑,以及我的语法是否正确. 我不断提出很多不同的例子来说明如何做到这一点。这就是我所拥有的:
我认为这样做是寻找 apdu_parse[0] 的第三位确定它是 1 还是 0 并相应地存储它。正如我所说,我不断遇到很多不同的例子,我认为我开始将它们混合起来,但没有任何效果。apdu_parse[0] 中的值是一个十六进制值,我不断得到'93',这没有任何意义。
java - How to fill high-end bits in a Java byte with '1' without knowing the last 1 in advance? (FAST FIX Negative Integer decoder)
I am writing a FIX/FAST decoder for negative numbers as described below:
My question is:
How to fill the high-end bits of a Java byte with 1s as it is described above? I am probably unaware of some bit manipulation magic I need to in this conversion.
So I need to go from 01000110 00111010 01011101 to 11110001 10011101 01011101.
I know how to shift by 7 to drop the 8th bit. What I don't know is how to fill the high-end bits with 1s.
c++ - 位移有符号整数
我正在位移一个符号整数第一个字节是指数接下来的 4 是尾数。这似乎并不总是有效,我相信这是因为将其称为字符,但是当我将其设为有符号或无符号字符时,它仍然不是 100%。有任何想法吗?
java - Extracting a sequence of bits from a binary string (or byte)
I have a whole bunch of hex strings (56 bits or 112 bits), which I need to extract different parts from, after converting to a binary string.
How I would normally do it is either substring the parts, or try my luck with bit shifting, but instead of having ~20 lines of Integer.parseInt(binary.substring(...)), I would like to apply some kind of pattern to it.
Any ideas, other than mine below, which is kind of stupid and slow; how to extract a-b, c-d, x-y parts of a binary string? I guess one would need to apply bit shifting, but that would also take multiple lines. I'm fine with a couple of lines, but I really dislike the ~20 substring calls.
Here's my attempt at something like this.
Output:
Any ideas are greatly appreciated
c# - 使用 C# 的 Ror 字节数组
有没有办法以byte[]
特定的数量对整体进行 Ror?我已经做了一些研究并找到了 Rol a 的解决方案byte[]
:
可以在此处找到此代码的作者:C# 中是否有一个函数可以为字节数组执行循环移位?
知道我怎么能做同样的事情,但在 a 上执行 Ror 操作而不是 Rol 操作byte[]
?