arrays - 哪种类型的字符集适合图像编码?[科特林]
问题描述
我曾尝试将 btye 数组转换为 charset-8 中的字符串,但它不起作用。有人可以指导我吗?
这是我将位图转换为字节数组的方法
private fun BitmapToByteArray(): ByteArray
{
val stream = ByteArrayOutputStream()
btm1!!.compress(Bitmap.CompressFormat.PNG, 100, stream)
val bitmapdata: ByteArray = stream.toByteArray()
return bitmapdata
}
这是我加密数据的方式
private fun encrypting_data(bitmapdata: ByteArray): String {
val key = secretkey!!.text.toString()
val btm1 = bitmapdata.toString(Charsets.UTF_8)
val s = btm1
//generating key from given secret key
val skey: Key = SecretKeySpec(key.toByteArray(), "AES")
print(skey.toString())
val c: Cipher = Cipher.getInstance("AES")
c.init(Cipher.ENCRYPT_MODE, skey)
//encrypting text string
val re = c.doFinal(s.toByteArray())
//converting encrypted string to base64
val re_base64 = Base64.encodeToString(re, Base64.NO_WRAP or Base64.NO_PADDING)
Log.e("aaAA", re_base64.toString())
//converting each chr of base64 string to binary and combining it
for (i in re_base64) {
var single_b_string = Integer.toBinaryString((i.toInt()))
//if binary str is less than 8 bit then making it 8 bit by adding 0's
if (single_b_string.length < 8) {
for (j in 1..(8 - single_b_string.length)) {
single_b_string = "0" + single_b_string
}
}
//final binary string to hide in image
b_string = b_string + single_b_string
}
Log.e("barraylength", b_string.toString())
Log.e("barray", b_string!!.length.toString())
return b_string.toString()
}
请指导我,谢谢
解决方案
简短的回答:没有。
字符集用于将字符映射到二进制,反之亦然。使用字符编码将图像的字节解码为字符串是没有意义的。您甚至有可能在您选择的字符编码中发现不是有效序列的字节序列,因此它们不会被正确转换为字符。
有时需要使用文本来表示二进制数据(例如,当使用纯文本传输/媒体来存储它时)。在这些情况下,您可以使用其他类型的编码,例如Base64,但我想您知道它,因为您在这里也已经在使用 base64 了。
请注意,在您当前的代码中,您将ByteArray
( bitmapdata
) 转换为String
( btm1
/ s
) 只是为了将其转换回ByteArray
( s.toByteArray()
)。为什么你甚至需要这样做?
推荐阅读
- javascript - Expo Push Notifications - 在特定屏幕中禁用通知
- pandas - 将行数据框附加并填充到更大的数据框以创建新列
- batch-file - 批处理文件和 MediaInfo CLI:计算平均比特率
- pandas - 删除带有年份的所有行!= Pandas
- powershell - 在 Powershell 上使用通配符重命名目录?
- ruby-on-rails - Rails 控制器参数与发送参数不同
- reactjs - 在我的 React 应用程序中纱线启动需要很长时间
- javacompiler - 有没有办法清除 JavaCompiler 的缓存?
- arrays - 如何仅获取字符串数组中的 .json 文件名以迭代文件名
- excel - 在 VBA 中跨定义的列集合并行