问题标签 [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 投票
1 回答
399 浏览

c# - 如何从char数组中投射双打

我从串口移入 3 个字符,每 3 个字符是我为端口拆分的双倍,所以现在我需要把它放回去。

(发送前的值 = 0x3F3400 或 0.703125)

请建议如何重建它,我不太了解双精度,我什至无法分辨双精度的哪一部分是小数点或 - 签名谢谢!

0 投票
1 回答
456 浏览

java - 位移大于 32 位长

我正在尝试从 7 字节数组中提取前 49 位。我使用掩码和位移来接近这个字节,如下所示:

long byteVal = ((decryptedVCW[6] & 0xff)&((decryptedVCW[6] & 0xff)<<7)) | ((decryptedVCW[5] & 0xff) << 8) | ((decryptedVCW[4] & 0xff) << 16) | ((decryptedVCW[3] & 0xff) << 24) | ((decryptedVCW[2] & 0xff) << 32) | ((decryptedVCW[1] & 0xff) << 40) | ((decryptedVCW[0] & 0xff) << 48);

其中decryptedVCW 是一个56 位字节数组。

屏蔽和位移按预期工作,直到 32 位移位'<<32'。

例如,decryptedVCW 的十六进制为 E865037A9C6424,其二进制为:

11101000011001010000001101111010100111000110010000100100

当我执行上述移位时,我得到 7AFC6503 二进制:

1111010111111000110010100000011

有谁知道为什么移位在 32 向上分崩离析以及如何解决这个问题?

非常感谢 Shiv

0 投票
1 回答
836 浏览

byte - 如何将两个字节的两半组合成一个字节

让我们这么说byte1 = 00001111,和byte2 = 11110000。我将如何取后半部分byte1,然后取前半部分byte2并将它们组合起来以获得一个字节的值11111111。我已经做了一些研究,但我似乎无法将我的头包裹在位掩码和移位上。

0 投票
5 回答
711 浏览

java - 为什么在java中左移改变符号值

我正在研究java。我想知道为什么 java 会产生这个输出。我在这里分享代码。

我得到的输出为

我预计输出应该是 0x0000019d

0 投票
1 回答
215 浏览

java - 左移一个字节会改变Java中的有符号位吗?

我有

我相信这会改变0001111011110000这样做是否实际上将一个 1 放入有符号位,或者将在有符号位中的那个被切断并且有符号位以其他方式改变?

此外,这会打印出来-16。为什么是这样?我以为11110000以 10 为底等于-112,我很困惑-16来自哪里。

0 投票
1 回答
1043 浏览

assembly - 将二进制/十六进制转换为八进制拆分的组装过程

这是一个任务,我不知道从哪里开始。

任务:

一个字节可以用三个八进制数字表示。第 7 位和第 6 位确定左八进制数字(从不高于 3);第 5、4 和 3 位是中间数字;位 2、1 和 0 是正确的数字。

例如,11010110 b 是 11 010 110 b 或 326 oct。通过将 2-3-3 系统分别应用于高位和低位字节,以拆分八进制表示一个字的值。

编写一个过程 splitOctal,将一个单词转换为一个正好为 7 个字符的字符串,表示 split octal 中数字的值;两组三个由一个空格隔开。

遵循 cdecl 协议。该过程将有两个参数:1) 字值(作为 doublewowd 的低位字传递)2) 7 字节长的目标字符串的地址。

修改:不是将值转换作为一个字推入堆栈,而是仅在堆栈上使用双字。因此,将要转换为 DOUBLEword 的值推入堆栈

我不知道从哪里开始通过移位和旋转位来实现这一点。也许给我一些材料来阅读,或者一点启动?

0 投票
1 回答
92 浏览

c - 打包多个值的二进制操作

我一直在玩蓝牙模块来发送数据。数据包含 3 个旋转 (0-360) 和 3 个按钮状态(位(0 或 1))。

我尝试将它映射到一个字符串(即:360_52_265_010% : x_y_z_bbb% 其中 % 是结束数据流的标记)但发送它实际上需要 16 个字节(或多或少),因为每个小字母都是一个字符(8 位)...

这是无法接受的。我有一个我无法容忍的小延迟,所以我想出了这个主意:

  • 一个旋转轴 = 9 位数据,因为最大值为 360,最多占用 9 位
  • 对于按钮状态,我们需要 3 次旋转 + 3 位,因此总共需要 30 位。
  • 在互联网上搜索最佳数据类型,谷歌给了我一个浮点数(32 位)

现在我正在考虑将所有这些值映射到一个浮点数中,因为 4 字节通过蓝牙连接远远超过 17 字节(我认为)

为了更好地解释,我对我认为应该起作用的东西做了这个漂亮的表示: 在此处输入图像描述

现在,我有 0 位移位经验。好吧,我知道主要概念,但我似乎无法让它发挥作用。我在这里这里查看了其他一些帖子,但面具让我感到困惑。

所以我就去做了,并尝试了这段小代码:

这会吐出一个浮点值 67113578(编辑这是错误的,由于将其打印到我的控制台,该值已从字符转换为字符串)

所以我想知道是否有人可以帮助我将这些值打包到一个浮点数中并返回到我的原始数据。

感谢您的帮助!

0 投票
2 回答
96 浏览

java - Java 移位字节返回意外结果

我正在尝试将 2 个字节转换为短字节。这 2 个字节代表一个无符号短路,反过来又代表一个端口。我尝试了多种方法将这些字节转换为 java 上的短字节。但是,我经常无法正确地做到这一点。

这些是我尝试过的方法:

结果是 0xFFCC,但应该是 0x17CC。

0 投票
1 回答
1570 浏览

javascript - 如何在javascript Uint32中反转字节顺序

我需要通过 chrome.sockets.udp 插件发送一个 ArrayBuffer。

数据通过 Android ionic 应用程序发送到在计算机上运行的模拟器。

我需要发送以下字段:

当我运行此代码时,我得到以下结果:

服务器应该得到下一个结果:

我应该如何在 dataView 中插入数字以按照服务器期望的顺序获取字节?

0 投票
1 回答
1686 浏览

java - 使用移位操作将代码点转换为 Java 中的 utf-8 字节数组

我在这里使用接受的答案“手动”从 unicode 转换为 UTF-8 代码单元。问题是我需要将生成的 UTF-8 包含在字节数组中。如何通过尽可能使用移位操作从十六进制转换为 uft-8 来做到这一点?

我已经拥有的代码如下:

我不知道如何正确处理字节,所以我知道我所做的事情可能是错误的。