当前位置: 首页 > 知识库问答 >
问题:

字节数组右移

皇甫雨华
2023-03-14

我有两个8位数的十六进制字符串。我需要对这两个十六进制字符串应用和操作,然后应用右移位到7位,并得到十进制值。我尝试将十六进制字符串转换为长度为4的字节数组(8*2=32位=4字节),并按相同的顺序对各个字节执行&操作,将结果保存到另一个长度为4的byre数组中。如何对这个字节数组进行位移位?

Ex : data1 in hex: 0x40003019,  
     data1 in bits: 0100-0000 0000-0000 0011-0000 0001-1001,
     data1 in bytes:    64   0  48  25,
     data2 in hex: 0x00FFFF80,
     data2 in bits : 0000-0000 1111-1111 1111-1111 1000-0000,
     data2 in bytes :  0 255 255 128

以及data1Bytes和data2Bytes之间的操作,该操作给出输出:bytearray1[0,0,48,0](这些0000-0000-0000-00000011-00000000-0000的位和十进制值为12,288)。

在这一步之前,我所有的转换和计算都按预期进行。现在我需要右移这个最终结果的7位,它应该给出0000-0000000000000000000000110-0000(十进制值96)。

1)我尝试将字节数组转换为int并应用右移

 var res = BitConverter.ToInt32(bytearray1, 0);
 var shift = res >> 7;

但是res=3145728(应该是12,228)和shift=24,576(应该是96)

2)我已经厌倦了将bytearray1[0,0,48,0]转换成位数组,但生成的位数组中的位是相反的顺序

var bitArray = new BitArray(bytearray1);

共有1个答案

黄沈浪
2023-03-14

我不知道为什么这对你不起作用,但当我尝试它时,明显的方法是有效的。

首先,假设您在uint值中有两个十六进制数字:

uint data1 = 0x40003019;
uint data2 = 0x00FFFF80;

现在只要把它们放在一起,然后右移结果:

uint anded  = data1 & data2;
uint result = anded >> 7; // Gives 96 as requested.
uint data1 = uint.Parse(str.Substring(2), NumberStyles.HexNumber);
 类似资料:
  • 问题内容: 我试图理解一个到字符串,一个的字符串表示形式到转换…我将我的转换成一个要发送的字符串,然后我希望我的Web服务(用python编写)将数据直接回显给客户端。 当我从Java应用程序发送数据时… 字节发送.. 发送(这是Arrays.toString()的结果,它应该是我的字节数据的字符串表示形式,该数据将通过电线发送): 在python端,python服务器将字符串返回给调用方(我可以

  • 问题内容: 有人可以指出以下更有效的版本吗 每个变量都是一个字节片,大小不一 : 码: : 基准测试结果: 问题答案: 如果已经分配了内存,则x = append(x,a …)的序列在Go中非常有效。 在您的示例中,初始分配(制造)的成本可能比附加序列的成本高。这取决于字段的大小。考虑以下基准: 在我的盒子上,结果是: 系统地重新分配缓冲区(甚至是很小的缓冲区)会使此基准测试速度至少慢5倍。 因此

  • 如何在java中将字节数组转换为int。我正在构建蓝牙应用程序,我在其上收到字节数组中的消息,然后将其转换为字符串,它已成功转换,但我也希望它以整数形式存在

  • 定长字节数组(Fixed-size byte arrays) bytes1, ... ,bytes32,允许值以步长1递增。byte默认表示byte1。 运算符 比较:<=,<,==,!=,>=,>,返回值为bool类型。 位运算符:&,|,^(异或),~非 支持序号的访问,与大多数语言一样,取值范围[0, n),其中n表示长度。 成员变量 .length表示这个字节数组的长度(只读)。 动态大小

  • 出于某些原因,我需要通过服务器套接字分别发送多个字节数组,客户端套接字将接收这些字节数组。发送字节数组后,发现客户端套接字接收的字节数组与服务器套接字接收的字节数组不相等。如果我使用ObjectOutputStream和ObjectInputStream,那么一切都很好,但是根据我的需要,我不能使用ObjectOutputStream和ObjectInputStream,因为我的服务器需要连接两个

  • 问题内容: 我得到一个整数: 当我使用方法: 给出: 但我想要一个字节数组: 我该怎么做? 问题答案: 使用Java NIO的ByteBuffer非常简单: 输出: