相关疑难解决方法(0)

Java中的字节数组和Int转换

我对这两个功能有些困难:byteArrayToIntintToByteArray.

问题是,如果我使用一个来到另一个并且结果到达前者,结果会有所不同,您可以从下面的示例中看到.

我找不到代码中的错误.任何想法都非常受欢迎.谢谢.

public static void main(String[] args)
{
    int a = 123;
    byte[] aBytes = intToByteArray(a);
    int a2 = byteArrayToInt(aBytes);

    System.out.println(a);         // prints '123'
    System.out.println(aBytes);    // prints '[B@459189e1'
    System.out.println(a2);        // prints '2063597568
            System.out.println(intToByteArray(a2));  // prints '[B@459189e1'
}

public static int byteArrayToInt(byte[] b) 
{
    int value = 0;
    for (int i = 0; i < 4; i++) {
        int shift = (4 - 1 - i) * 8;
        value += (b[i] & 0x000000FF) << shift;
    } …
Run Code Online (Sandbox Code Playgroud)

java

43
推荐指数
4
解决办法
14万
查看次数

为什么RandomAccessFile类中没有readUnsignedInt?

我刚刚发现类中没有readUnsignedInt()方法RandomAccessFile.为什么?是否有任何解决方法从文件中读取unsigned int?

编辑:

我想从文件中读取unsigned int并将其放入一个长空间.

EDIT2:

不能使用readLong().它将读取8个字节而不是4个字节.文件中的数据在4字节范围内具有无符号整数.

EDIT3:

在这里找到答案:http://www.petefreitag.com/item/183.cfm

Edit4:

如果数据文件是little-endian怎么样?我们需要先换位?

java

10
推荐指数
1
解决办法
2488
查看次数

合并java/android中的两个字节

我有一个22字节的帧.帧是来自加速度计的输入流,通过蓝牙.加速度计读数是一个16位数,分为两个字节.

当我尝试将字节与缓冲区[1] +缓冲区[2]合并,而不是添加字节时,它只是将结果并排放置.所以1 + 2 = 12.

有人能告诉我如何组合这两个字节来获得原始数字.(顺便说一句,字节是以小端发送的)

谢谢

android byte multibyte

7
推荐指数
1
解决办法
8269
查看次数

散列整数数组

我正在使用哈希集,其中我存储整数数组(32位).这意味着我需要一个算法来散列整数数组.我正在寻找一个32位整数(C#int)哈希.

我已经尝试并编辑了两个现有的算法,你可以看到底部的四个版本,包括它们的基准.

我的问题如下:

1.您认为底层算法是否适用于此目的?

2.有没有更好的算法可用于此目的?

计划信息

  • 通常,数组具有16 entries整数smaller than 10,但两者都必须支持更大的值.我可以说有机会发生的最大值是200个条目和值为20的整数.
  • 我在呼吸优先搜索算法中使用HashSet来比较两个节点是否相同.http://en.wikipedia.org/wiki/Breadth-first_search.
  • 对于这个特定的程序,我无法使用不安全的代码.

基准和代码

下面是我的基准测试和代码,从我的程序中的最差到最佳性能.

  • Coordinates2D是一个包含int x和int y的结构.
  • 运行端HashSet中的总条目是 356525
  • 我无法准确地检索碰撞次数.给出的数字是实际比较对象且不相等的次数(相同的散列,不同的对象).但是,这在同一对象之间多次发生.由于程序是多线程的,因此每次执行时该值会有所不同.
  • MurMurHash3种子是 const uint seed = 144

MurMurHash3使用从坐标直接检索的字节

代码等于https://gist.github.com/automatonic/3725443 使用以下代码检索字节数组:

int size = Marshal.SizeOf(typeof(Coordinates2D));
int length = carCoords.Length;
Byte[] bytes = new Byte[size * length];
for (int i = 0; i < length; ++i)
{
    GCHandle pinStructure = GCHandle.Alloc(carCoords[i], GCHandleType.Pinned);
    Marshal.Copy(pinStructure.AddrOfPinnedObject(), bytes, i*size, size);
    pinStructure.Free();
}

// Hash the byte array
return MurMurHash3.Hash(new System.IO.MemoryStream(bytes)); …
Run Code Online (Sandbox Code Playgroud)

c# arrays hash integer

7
推荐指数
1
解决办法
4463
查看次数

如何在Java中使用ByteBuffer的Wrap方法

好吧,所以我正在查找从字节数组转换为java中的数值的最佳方法是什么,我遇到了这个链接.第二个答案提到了ByteBuffer类的使用.对于那些不希望点击链接的人,最初问题是否我有:

byte[] by = new byte[8];
Run Code Online (Sandbox Code Playgroud)

如何将其转换为int?答案是......

ByteBuffer bb = ByteBuffer.wrap(new byte[] {0, 0, 0, 0, 0, 0, 0, 4});
long l = bb.getLong();

System.out.println(l);
Run Code Online (Sandbox Code Playgroud)

结果

4
Run Code Online (Sandbox Code Playgroud)

这真是太棒了,但我只是想在走这条路之前确认一些事情.

假设我之前读取的字节数组长度为8个字节.

byte[] oldByte = new byte[8];
Run Code Online (Sandbox Code Playgroud)

那我呢......

ByteBuffer bb = ByteBuffer.wrap(new byte[] {oldByte[2], oldByte[3]});
int intValue = bb.getInt();
Run Code Online (Sandbox Code Playgroud)

是否会以与前一个示例相同的方式读取/读取?

java arrays byte bytebuffer type-conversion

6
推荐指数
1
解决办法
2万
查看次数

如何在Java中将字节转换为long?

我正在从硬件设备读取8个字节的数据.我需要将它们转换为数值.我想我想将它们转换为长度,因为它应该适合8个字节.我对Java和低级数据类型操作不是很熟悉.我似乎有两个问题(除了几乎没有相关硬件的文档),字节期望是无符号的,所以我不能进行直接整数转换.我不确定它们是什么字节序.

任何意见,将不胜感激.


结束了这个(取自一些源代码,我可能应该在一周前阅读):

public static final long toLong (byte[] byteArray, int offset, int len)
{
   long val = 0;
   len = Math.min(len, 8);
   for (int i = (len - 1); i >= 0; i--)
   {
      val <<= 8;
      val |= (byteArray [offset + i] & 0x00FF);
   }
   return val;
}
Run Code Online (Sandbox Code Playgroud)

java

5
推荐指数
5
解决办法
3万
查看次数

有没有人将byteArray中的信息解析为整数和字符串?

我正在开发一个应用程序,它接收带有字节数组的数据报包,我需要获取它的信息并将其转换为对象.

我已阅读文档,并说它存储了每个信息的字节数组上的位置,但我似乎无法正确地将其解析为对象.最近有没有人做过类似的工作?

java

2
推荐指数
1
解决办法
103
查看次数

标签 统计

java ×5

arrays ×2

byte ×2

android ×1

bytebuffer ×1

c# ×1

hash ×1

integer ×1

multibyte ×1

type-conversion ×1