【问题标题】:How to convert bytes to int and compare with value如何将字节转换为int并与值进行比较
【发布时间】:2019-02-19 04:54:24
【问题描述】:

所以我有一个值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)

【问题讨论】:

  • 在这里检查一个好的解决方案:stackoverflow.com/questions/9643228/…
  • 您正在检查read 调用的结果,而不是读取的数据。但我已经在回答你之前的问题时给了你代码,所以请不要一直问同样的问题。
  • 我想在没有 BufferedInputStream 和 DataInputStream 的情况下使用,只有 FileInputStream

标签: java scala


【解决方案1】:

如果你真的不想使用 DataInputStream.readInt, 那么这里是如何检查 Java 中前 4 个字节的方法:

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)) 

【讨论】:

    猜你喜欢
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 2023-03-30
    • 2020-12-26
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多