问题标签 [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.

0 投票
3 回答
1381 浏览

c - 如何在 C 中将 2 个字节转换为有符号短

我有 2 个字节需要转换为有符号短数。例如,我在二进制中有单独的字节 (0000 0001) 和 (0000 0002)。如何将这些转换为带符号的短值?

0 投票
0 回答
124 浏览

c - 如何从偏移量中提取特定位

我试图在c中创建一个汇编器,在其中我从包含命令的文件中获取输入,在这种情况下,branchifequal我然后获取它的操作码,10然后byte[0] = 0xA0我获取下一个4位的寄存器,然后注册下一个 4 但是我如何处理偏移量?假设命令是branchifequal r1 r2 8那么手工组装应该是A1 20 00 08。我知道这是通过检查地址偏移量的前 4 位(即 0)和0000 0000 0000 1000我认为的后 16 位来完成的。应该转换为00 08十六进制。在检查第二个字节中的最后 4 位和第 3 个字节中的 2 位以及第 4 字节中的最后 2 位时,我怎样才能得到这个只是简单的十六进制值本身,这在我的代码中完成。我有同样的问题jump命令也一样。

PR1.C

0 投票
1 回答
1693 浏览

endianness - stm32微控制器上的字节顺序功能

是否有任何关于 htonll、ntohll、ntohl、htonl 的书面函数,例如我在论坛上找到的这个函数:

或者你能告诉我每一个的数据转移方案,然后像上面这个一样写吗?

编辑:

这些是否正确:

0 投票
1 回答
65 浏览

c++ - 将字符移出范围的危险

好的,

我编写了一个函数,该函数从十六进制文件中获取一个无符号字符,然后将其向左移动以适合 WORD、DWORD 或 QWORD,如下所示:

(在循环内,因此变量 i 和 j)。

现在视觉工作室让我想起了可能的算术溢出。

我的问题:如果我将 j 限制为不超过 8(uint64_t 的大小),我可以安全地忽略此消息吗?我总是对警告感到有些沮丧,并试图消除它们。

据我了解,在保存价值之前向左移动多少并不重要,我弄错了吗?

编辑:

这是一个例子(这是我的功能):

0 投票
1 回答
618 浏览

c++ - 将 char 数组转换为 uint16_t 数组 C/C++

我编写了以下代码,将数据从一个字符串(字符数组)转换并存储str到一个 16 位整数数组中,称为arr16bit

该代码有效。但是,我想说有一种更好或更简洁的方法来实现这个逻辑,使用更少的变量等。

我不想使用 indexi来获取模数 % 2,因为如果使用 little endian,我有相同的算法,但从i字符串的最后一个索引开始并倒计时而不是向上倒计时。任何建议表示赞赏。

0 投票
1 回答
52 浏览

c - 如何在没有多个掩码的情况下使用更多值进行位操作?

我有这个任务,我不知道该怎么做,一个简单的谷歌不会帮助我。也不完全确定要搜索什么。

但我正在创建一个包含小时、分钟和秒的时钟/手表。我使用的位掩码是:

到目前为止,我所理解的是,小时位的数量是适合 0 -> 11 的 12 个选项的原因。而 0 -> 59 的分钟和秒的 6 位。

几个小时以来,我有点在黑暗中为每个可能的小时创建 12 个单独的位掩码。完成后,我意识到我必须这样做几分钟和几秒钟,这将是 120 行不必要的代码。

这就是我所做的:

我相信解决方案与位移有关,但我不确定如何做到这一点。

谁能给我一个将 0001(0 小时)更改为 1010(8 小时)的示例,以便我可以在我的代码中实现它并自己解决。

0 投票
0 回答
87 浏览

javascript - 如何根据javascript中的文本选择移动标记的字符

我想_#current selected text#_在当前选择的文本周围移动标记。所以让我们看一个例子。

  1. 第 1 步:仍然没有选择文本,所以字符串是:

    let stringVal = "Hello friends, let's program with javascript";


  1. 第 2 步: Hello friends已选择,因此字符串为:

    stringVal = "_#Hello friends#_, let's program with javascript";


  1. 第 3 步: Hello friends, let's已选择,因此字符串为:

    stringVal = "_#Hello friends, let's#_ program with javascript";

    如您所见,此处let's添加到选择文本中,因此标记的末尾#_移动ahead到相同大小的, let's.


  1. 第 4 步: with已选择,因此字符串为:

    stringVal = "_#Hello friends, let's#_ program _#with#_ javascript";

    可以看到,这里with单独标记为_#with#_,因为它既不附在前文也不附在下文


  1. 第 5 步: gram with javascript已选择,因此字符串为:

    stringVal = "_#Hello friends, let's#_ pro_#gram with javascript#_";

    如您所见,这里gram添加了之前 with,所以起始标记_#移动back到相同大小gram,另一方面javascript添加之后 with,所以结束标记#_移动ahead到相同大小javascript


  1. 第 6 步: let's program已选中,因此字符串为:

    stringVal = "_#Hello friends, #_ _#let's program#_ _#with javascript#_";

    这一步很复杂,如您所见,这里let's在 afterbeforegram 重新选择pro添加,所以起始标记移动到前面,结束标记移动到后面。另外我们应该小心,因为它没有结束标记,所以我们必须添加,也没有,所以我们必须添加。 let's gram_#back let's#_ahead gram_#Hello friends,_#Hello friends, #_with javascript#_starter mark_#with javascript#_


  1. 第 7 步: let's program with javascript已选择,因此字符串为:

    stringVal = "_#Hello friends, let's program with javascript#_";

    这一步很简单,如您所见all textselected我们只需标记一次。

我做了什么:

上面的代码结果是:_#Hello friends#_, let's program with javascript language.

正确的一个是:_#Hello friends#_, let_'s _#program#_ with _#javascript language#_

在这里我找不到稳定的解决方案,在我的解决方案中它删除了所有以前的样式,并且样式再次仅适用于当前选定的文本。

但是我想保存之前选择的文本的状态并添加新的样式,如果有任何重叠,那么它将被覆盖。

另外,如果有图书馆可以做这件事,你可以建议我

我的最后一次尝试

我曾经尝试保存所有标记样式的索引,然后将其与当前选定文本的索引进行比较,但它也没有响应,代码在这里。

0 投票
0 回答
63 浏览

c# - 反转 XOR 字节移位算法

我正在为一个旧的多人游戏开发这个非官方的启动器,该游戏曾经由 Gamespy 托管(现在已经死了)。而且我们正试图让它再次可玩,因为旧时代的缘故。我们正在使用开源 RetroSpyServer 再次列出服务器,但现在我们想将该信息加载到我们的启动器中。

用于加密服务器响应列表的加密类是https://github.com/GameProgressive/RetroSpyServer/blob/master/GameSpyLib/Encryption/GOAAncryption.cs

更具体地说,我需要帮助的功能是 GOAEncryptByteShift。

看起来它是一个基于 xor & and 的加密,我有 secretKey、server 和 clientChallenge。但我似乎无法弄清楚如何扭转字节移位。

任何帮助将不胜感激!

0 投票
1 回答
29 浏览

c - 为什么等号移位打印出与不等情况相反的不同结果?

为什么 01 和 02 大小写不同?

0 投票
0 回答
93 浏览

c - 就字节序而言,是否使用相同的掩码可移植 msb 和 lsb?

假设以下 C 代码在 32 位平台上运行(因此 sizeof(int) = 4),以下代码是否可在大端和小端之间移植?当我问“它是否便携”时,我的意思是应用程序会打印:

a) 在小端平台上

b) 在大端平台上

?