Как преобразовать байты в int и сравнить со значением - PullRequest
0 голосов
/ 14 сентября 2018

Итак, у меня есть значение FFD8FFE0 (подпись jpg / jpeg), и я хочу проверить, является ли загруженный файл jpg / jpeg, но он возвращает false

val param = new FileInputStream(f)
val cnt = param.available
val bytes = Array.ofDim[Byte](cnt)
println(param.read(bytes)==0xFFd8FFe0)

1 Ответ

0 голосов
/ 14 сентября 2018

Если вы действительно не хотите использовать удобство DataInputStream.readInt, то вот как вы можете проверить первые 4 байта в Java:

InputStream stream = new FileInputStream("example.jpg");
byte[] bytes = new byte[4];
stream.read(bytes);
byte[] expectedBytes = { (byte) 0xFF, (byte) 0xD8, (byte) 0xFF, (byte) 0xE0 };
System.out.println(Arrays.equals(expectedBytes, bytes));

ито же самое в Scala:

val stream = new FileInputStream("example.jpg")
val bytes = Array.ofDim[Byte](4)
stream.read(bytes)
val expectedBytes = Array(0xFF.toByte, 0xD8.toByte, 0xFF.toByte, 0xE0.toByte)
println(Arrays.==(expectedBytes, bytes)) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...