android img的sparse和ext4格式

由于现在系统的emmc容量越来越大,以及android应用的越来越庞大复杂,一些分区的size也越来越大比如system.img,userdata.img,cache.img,boot.img等。以前这些img的格式都是ext3或4,现在android环境默认情况下编译出的这些img是一种叫做sparse格式的文件。

        顾名思义 sparse是一种稀疏的文件描述格式,size比ext4的要小很多,而ext4格式的文件中有很多零填充。可以通过file命令来区分文件损坏那种格式。

例如 file system.img,如果是sparse格式只会显示一个data,而如果是ext4格式会显示一长串字符,其中有ext4字样。

        这两种格式的img之间可以通过工具进行转换,转换的工具放在编译后生成的out/host/linux-x86/bin/里,分别为simg2img和img2simg,必须要经过完整的android编译才会生成,只编译lk或bootimg是不会生成的。

        例如要将sparse格式转换为raw ext4格式,可以这样:simg2img system.img system.ext4.img。

        为什么要知道转换的方法,因为现在android默认编译出的sytem.img, cache.img, userdata.img等都是sparse格式的,而下载工具很可能只支持ext4格式的Img下载,这时就需要手动转换一下,比如高通的QFIL,如果不转换成ext4格式的img进行加载,开机后这些分区是挂载不上的,系统自然也无法起来。切记!

使用下面命令加载ext4文件系统

sudo mount -t ext4 -o loop system.ext4.img ./system

SparseMatrix转换成CSR格式是一种常见的稀疏矩阵存储格式转换操作。CSR格式(Compressed Sparse Row)是一种用于存储稀疏矩阵的压缩格式,它将矩阵按行压缩存储,只保存非零元素的值、列索引和行偏移量。 以下是将SparseMatrix转换成CSR格式的一种实现方法: 1. 获取稀疏矩阵的行数(rows)和列数(cols)。 2. 初始化三个列表:data(存储非零元素的值)、indices(存储非零元素的列索引)和indptr(存储行偏移量)。 3. 遍历稀疏矩阵的每一行: - 记录当前行的非零元素数目(count)。 - 将当前行的非零元素值添加到data列表中。 - 将当前行的非零元素列索引添加到indices列表中。 - 将当前行的行偏移量添加到indptr列表中。 4. 将最后一个行偏移量设置为data列表的长度。 5. 将data、indices和indptr列表转换成数组形式,即可得到CSR格式的稀疏矩阵表示。 以下是一个Python代码示例: ```python import numpy as np from scipy.sparse import csr_matrix def convert_to_csr(sparse_matrix): rows, cols = sparse_matrix.shape data, indices, indptr = [], [], [0] for i in range(rows): count = 0 for j in range(cols): if sparse_matrix[i, j] != 0: data.append(sparse_matrix[i, j]) indices.append(j) count += 1 indptr.append(indptr[-1] + count) return csr_matrix((data, indices, indptr), shape=(rows, cols)) # 示例使用 sparse_matrix = np.array([[0, 0, 1], [2, 0, 0], [0, 3, 0]]) csr_matrix = convert_to_csr(sparse_matrix) print("CSR格式稀疏矩阵:") print(csr_matrix.toarray()) ``` 该示例代码中,我们使用了NumPy和SciPy库来操作稀疏矩阵。首先,我们定义了一个`convert_to_csr`函数,接受一个稀疏矩阵作为输入,并返回CSR格式的稀疏矩阵。然后,我们定义了一个示例稀疏矩阵`sparse_matrix`,调用`convert_to_csr`函数将其转换为CSR格式,并打印输出结果。 希望这个示例对你有帮助!如果有任何其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值