gpt4 book ai didi

java - 在 Scala 中处理 BZIP 字符串/文件

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:45 28 4
gpt4 key购买 nike

我通过在 Scala 中进行 Python 挑战系列来惩罚自己。

现在,挑战之一是读取使用 bzip 算法压缩的字符串并输出结果。

BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084

现在,经过一番挖掘,似乎没有用于 bzip 处理的标准 java 库,但 apache ant 项目中有一些东西,that this guy已取出用作单独的库。

问题是,我似乎无法让它与以下代码一起工作,它只是卡在 scala REPL 中,并且 JVM 的 CPU 使用率达到 100%

这是我正在尝试的代码...

import java.io.{ByteArrayInputStream}
import org.apache.tools.bzip2.{CBZip2InputStream}
import org.apache.commons.io.{IOUtils}
object ChallengeEight extends Application {
val inputString = """BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084"""
val inputStream = new ByteArrayInputStream( inputString.getBytes("UTF-8") ) //convert string to inputstream
inputStream.skip(2) //skip the 'BZ' part at the start
val bzipInputStream = new CBZip2InputStream(inputStream) //hangs here....
val result = IOUtils.toString(bzipInputStream, "UTF-8");
println(result)
}

有人有什么想法吗?或者,CBZip2InputStream 类是否需要一些额外的字节,您可能会在使用 bzip2 压缩的文件中找到这些字节?

如有任何帮助,我们将不胜感激

编辑作为记录,这是Python解决方案

import bz2

un = "BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!" \
"\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084"

print [bz2.decompress(elt) for elt in (un)]

最佳答案

要转义字符,请使用 unicode escape sequence类似于 \uXXXX 语法,其中 XXXX 是 unicode 字符的十六进制序列。

val un = "BZh91AY&SYA\u00af\u0082\r\u0000\u0000\u0001\u0001\u0080\u0002\u00c0\u0002\u0000 \u0000!\u009ah3M\u0007<]\u00c9\u0014\u00e1BA\u0006\u00be\u00084"

关于java - 在 Scala 中处理 BZIP 字符串/文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5159602/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com