问题标签 [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 - 如何在 C 中将 2 个字节转换为有符号短
我有 2 个字节需要转换为有符号短数。例如,我在二进制中有单独的字节 (0000 0001) 和 (0000 0002)。如何将这些转换为带符号的短值?
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
endianness - stm32微控制器上的字节顺序功能
是否有任何关于 htonll、ntohll、ntohl、htonl 的书面函数,例如我在论坛上找到的这个函数:
或者你能告诉我每一个的数据转移方案,然后像上面这个一样写吗?
编辑:
这些是否正确:
c++ - 将字符移出范围的危险
好的,
我编写了一个函数,该函数从十六进制文件中获取一个无符号字符,然后将其向左移动以适合 WORD、DWORD 或 QWORD,如下所示:
(在循环内,因此变量 i 和 j)。
现在视觉工作室让我想起了可能的算术溢出。
我的问题:如果我将 j 限制为不超过 8(uint64_t 的大小),我可以安全地忽略此消息吗?我总是对警告感到有些沮丧,并试图消除它们。
据我了解,在保存价值之前向左移动多少并不重要,我弄错了吗?
编辑:
这是一个例子(这是我的功能):
c++ - 将 char 数组转换为 uint16_t 数组 C/C++
我编写了以下代码,将数据从一个字符串(字符数组)转换并存储str
到一个 16 位整数数组中,称为arr16bit
该代码有效。但是,我想说有一种更好或更简洁的方法来实现这个逻辑,使用更少的变量等。
我不想使用 indexi
来获取模数 % 2,因为如果使用 little endian,我有相同的算法,但从i
字符串的最后一个索引开始并倒计时而不是向上倒计时。任何建议表示赞赏。
c - 如何在没有多个掩码的情况下使用更多值进行位操作?
我有这个任务,我不知道该怎么做,一个简单的谷歌不会帮助我。也不完全确定要搜索什么。
但我正在创建一个包含小时、分钟和秒的时钟/手表。我使用的位掩码是:
到目前为止,我所理解的是,小时位的数量是适合 0 -> 11 的 12 个选项的原因。而 0 -> 59 的分钟和秒的 6 位。
几个小时以来,我有点在黑暗中为每个可能的小时创建 12 个单独的位掩码。完成后,我意识到我必须这样做几分钟和几秒钟,这将是 120 行不必要的代码。
这就是我所做的:
我相信解决方案与位移有关,但我不确定如何做到这一点。
谁能给我一个将 0001(0 小时)更改为 1010(8 小时)的示例,以便我可以在我的代码中实现它并自己解决。
javascript - 如何根据javascript中的文本选择移动标记的字符
我想_#current selected text#_
在当前选择的文本周围移动标记。所以让我们看一个例子。
第 1 步:仍然没有选择文本,所以字符串是:
let stringVal = "Hello friends, let's program with javascript";
第 2 步:
Hello friends
已选择,因此字符串为:stringVal = "_#Hello friends#_, let's program with javascript";
第 3 步:
Hello friends, let's
已选择,因此字符串为:stringVal = "_#Hello friends, let's#_ program with javascript";
如您所见,此处
let's
添加到选择文本中,因此标记的末尾#_
移动ahead
到相同大小的, let's
.
第 4 步:
with
已选择,因此字符串为:stringVal = "_#Hello friends, let's#_ program _#with#_ javascript";
可以看到,这里
with
单独标记为_#with#_
,因为它既不附在前文也不附在下文。
第 5 步:
gram with javascript
已选择,因此字符串为:stringVal = "_#Hello friends, let's#_ pro_#gram with javascript#_";
如您所见,这里
gram
添加了之前with
,所以起始标记_#
移动back
到相同大小gram
,另一方面javascript
添加之后with
,所以结束标记#_
移动ahead
到相同大小javascript
。
第 6 步:
let's program
已选中,因此字符串为:stringVal = "_#Hello friends, #_ _#let's program#_ _#with javascript#_";
这一步很复杂,如您所见,这里
let's
又在 after和beforegram
重新选择和pro
添加,所以起始标记移动到前面,结束标记移动到后面。另外我们应该小心,因为它没有结束标记,所以我们必须添加,也没有,所以我们必须添加。let's
gram
_#
back
let's
#_
ahead
gram
_#Hello friends,
_#Hello friends, #_
with javascript#_
starter mark
_#with javascript#_
第 7 步:
let's program with javascript
已选择,因此字符串为:stringVal = "_#Hello friends, let's program with javascript#_";
这一步很简单,如您所见
all text
,selected
我们只需标记一次。
我做了什么:
上面的代码结果是:_#Hello friends#_, let's program with javascript language
.
正确的一个是:_#Hello friends#_, let_'s _#program#_ with _#javascript language#_
。
在这里我找不到稳定的解决方案,在我的解决方案中它删除了所有以前的样式,并且样式再次仅适用于当前选定的文本。
但是我想保存之前选择的文本的状态并添加新的样式,如果有任何重叠,那么它将被覆盖。
另外,如果有图书馆可以做这件事,你可以建议我
我曾经尝试保存所有标记样式的索引,然后将其与当前选定文本的索引进行比较,但它也没有响应,代码在这里。
c# - 反转 XOR 字节移位算法
我正在为一个旧的多人游戏开发这个非官方的启动器,该游戏曾经由 Gamespy 托管(现在已经死了)。而且我们正试图让它再次可玩,因为旧时代的缘故。我们正在使用开源 RetroSpyServer 再次列出服务器,但现在我们想将该信息加载到我们的启动器中。
用于加密服务器响应列表的加密类是https://github.com/GameProgressive/RetroSpyServer/blob/master/GameSpyLib/Encryption/GOAAncryption.cs
更具体地说,我需要帮助的功能是 GOAEncryptByteShift。
看起来它是一个基于 xor & and 的加密,我有 secretKey、server 和 clientChallenge。但我似乎无法弄清楚如何扭转字节移位。
任何帮助将不胜感激!
c - 为什么等号移位打印出与不等情况相反的不同结果?
为什么 01 和 02 大小写不同?
c - 就字节序而言,是否使用相同的掩码可移植 msb 和 lsb?
假设以下 C 代码在 32 位平台上运行(因此 sizeof(int) = 4),以下代码是否可在大端和小端之间移植?当我问“它是否便携”时,我的意思是应用程序会打印:
a) 在小端平台上
b) 在大端平台上
?