前端例程20210808:文件转十六进制数组工具

目的

我在做偏底层的嵌入式开发的时候如果用到WebServer,那么经常还有可能需要在C/C++代码中嵌入网页文件。常见的作法是将网页文件压缩成gz格式压缩包后再转换成十六进制数组嵌入到C/C++代码中。这个过程中就需要用到文件转十六进制数组工具了,这里就贴上一个简单的工具。

功能演示

在这里插入图片描述

代码实现

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>文件转字节数组工具</title>
    <script>
        var hexstr = "";

        function read(file) {
            var reader = new FileReader();
            reader.onload = function () {
                let filearr = new Uint8Array(this.result); // 将文件数据存储成字节数组
                document.getElementById("showsize").innerHTML = filearr.length;
                hexstr = "";
                for (let i = 0; i < filearr.length; i++) {
                    hexstr = hexstr + "0x" + (Array(2).join(0) + filearr[i].toString(16).toUpperCase()).slice(-2) + ", "; // 将字节数据转换成0xXX, 方式字符串
                }
                hexstr = hexstr.substring(0, hexstr.lastIndexOf(", ")); // 去掉最后的, 
                document.getElementById("showarr").value = hexstr;
            }
            reader.readAsArrayBuffer(file); // 以数组方式读取
        }

        function copy() {
            navigator.clipboard.writeText(hexstr).then(function () {
                alert("复制成功!");
            }, function () {
                alert("复制失败!");
            });
        }
    </script>
</head>

<body>
    <input type="file" onchange="read(this.files[0])" />
    <p>文件长度是:<span id="showsize"></span> (字节)</p>
    <textarea id="showarr" style="overflow-y: scroll; width: 30rem; height: 15rem;"></textarea>
    <br><button onclick="copy()">复制到剪贴板</button>
</body>

</html>

总结

工具比较简单,就是获取下文件并将其数据一个字节一个字节转换成十六进制显示。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naisu Xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值