将压缩字符串发送为“字符串”

时间:2019-07-24 15:44:16

标签: android string kotlin compression

假设有2个人安装了2个电话,并且安装了相同的程序:

-人员A

-人B

人员A的程序希望在不通过互联网的情况下共享大约6个信息变量。

-选项1:QR码。有效。

-选项2:COMPRESSED(又名尽可能短)编码字符串。可行,但看起来很糟糕。 这个问题与选项2有关。

由于我缺乏知识(愚蠢),我向您道歉:

我想到了压缩变量(我只是在变量之间加了一个定界符,以便接收者可以读取它),然后使用Deflator()/ Inflator()发送结果OUTPUT:

val output = ByteArray(512)
val compresser = Deflater(9)
compresser.setInput(encodedText)
compresser.finish()
val compressedDataLength = compresser.deflate(output)
compresser.end()
code.text = output**.toString()** + "°" + compressedDataLength.toString()

如果我使用output.toString(charset(“ UTF-8”))打印输出,则得到的字符串很长,带有“?Unknown”字符。不好。

如果我使用output.toString()打印输出,则会得到一个非常简短的字符串,但是当我尝试使用以下命令将其解压缩时:

val rawCode = code.text.toString() //user pastes "Coded String"
val tokensRaw = StringTokenizer(code.text.toString(), "°") // Separate length and data
val CompressedData = tokensRaw.nextToken()
val dataLength = tokensRaw.nextToken()

decompresser = Inflater()         
decompresser.setInput(CompressedData.toByteArray(), 0, dataLength.toInt())
val result = ByteArray(512)
val resultLength = decompresser.inflate(result)
decompresser.end()

解压缩数据时出现ArrayIndexOutOfBounds错误。

现在,这是在使用简短的“字符串”时。如果我发送长未知字符串,则可以正常工作。但是字符串又长又丑,我不妨使用Base64来“加扰”数据。

我猜.toString()会破坏数据,而.toString(charset(“ UTF-8”))会保留数据,但是会很长。

0 个答案:

没有答案