我的问题是关于 Java 的。
我需要一种方法,该方法返回从字节数组中指定位置的两个字节转换而来的无符号 16 位整数。
换句话说,我需要适用于 Java 7 的 C# 的方法 BitConverter.ToUInt16 的等效方法。
在 C# 中
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
namespace CSharp_Shell
{
public static class Program
{
public static void Main()
{
byte[] arr = { 10, 20, 30, 40, 50};
ushort res = BitConverter.ToUInt16(arr, 1);
Console.WriteLine("Value = "+arr[1]);
Console.WriteLine("Result = "+res);
}
}
}
我得到输出:
Value = 20
Result = 7700
但是当我把它翻译成Java
import java.util.*;
public class Main
{
public static void main(String[] args)
{
byte[] arr = { 10, 20, 30, 40, 50};
int tmp = toInt16(arr, 1);
System.out.println(("Value = "+arr[1]));
System.out.println(("Result = "+tmp));
}
public static short toInt16(byte[] bytes, int index) //throws Exception
{
return (short)((bytes[index + 1] & 0xFF) | ((bytes[index] & 0xFF) << 0));
//return (short)(
// (0xff & bytes[index]) << 8 |
// (0xff & bytes[index + 1]) << 0
//);
}
}
我期待与 C# 相同的输出,但我得到的不是输出:
Value = 20
Result = 30
如何使用 Java 获得相同的输出?