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

Posted Naisu Xu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端例程:文件转十六进制数组工具相关的知识,希望对你有一定的参考价值。

目的

我在做偏底层的嵌入式开发的时候如果用到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>

总结

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

以上是关于前端例程:文件转十六进制数组工具的主要内容,如果未能解决你的问题,请参考以下文章

前端例程:文件转 DataURI Base64 数据工具

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段

前端例程:盐酸与氢氧化钠溶液中和pH计算工具

JS小工具_字符串转16进制数组_01

C# 字节数组各进制字符串数据互转