相关疑难解决方法(0)

将4个字节转换为int

我正在读这样的二进制文件:

InputStream in = new FileInputStream( file );
byte[] buffer = new byte[1024];
while( ( in.read(buffer ) > -1 ) {

   int a = // ??? 
}
Run Code Online (Sandbox Code Playgroud)

我想做什么来读取最多4个字节并从那些创建一个int值但是,我不知道该怎么做.

我觉得我必须一次抓取4个字节,并执行一个"字节"操作(如>> << >>&FF和类似的东西)来创建新的int

这个成语是什么?

编辑

哎呀,结果有点复杂(解释)

我想要做的是,读取一个文件(可能是ascii,二进制,无所谓)并提取它可能具有的整数.

例如,假设二进制内容(在基数2中):

00000000 00000000 00000000 00000001
00000000 00000000 00000000 00000010
Run Code Online (Sandbox Code Playgroud)

整数表示应该是1,2对吗?: - 前1位为32位,其余32位为2位.

11111111 11111111 11111111 11111111
Run Code Online (Sandbox Code Playgroud)

将是-1

01111111 11111111 11111111 11111111
Run Code Online (Sandbox Code Playgroud)

将会 Integer.MAX_VALUE ( 2147483647 )

java data-conversion

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

在短和字节之间转换的好方法?

我需要接受成对字节,输出短路,并输入短路和输出字节对.以下是我为此目的设计的功能:

static short ToShort(short byte1, short byte2)
{
    short number = (short)byte2;
    number <<= 4;
    number += (short)byte1;
    return number;
}
static void FromShort(short number, out byte byte1, out byte byte2)
{
    byte byte2 = (byte)(number >> 4);
    short tempByte = (short)byte2 << 4;
    byte byte1 = (byte)(number - tempByte);
}
Run Code Online (Sandbox Code Playgroud)

我认为这是正确的,但我不确定.如果这不是正确的方法,那是什么?有没有办法在框架中做到这一点?

.net c# byte short

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

如何将4个字节组合成32位无符号整数?

我正在尝试将4个字节转换为32位无符号整数.

我想也许是这样的:

UInt32 combined = (UInt32)((map[i] << 32) | (map[i+1] << 24) | (map[i+2] << 16) | (map[i+3] << 8));
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有起作用.我错过了什么?

c# bit-manipulation

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

标签 统计

c# ×2

.net ×1

bit-manipulation ×1

byte ×1

data-conversion ×1

java ×1

short ×1