首页 > 解决方案 > HexDecode // 十六进制编码

问题描述

问题是我尝试通过 HexDecode 和 HexEncode 将一个数组转换为另一个数组。一切都运行良好,直到我尝试将两个字符(例如 005002bb [Latin T'])转换为一个字符(例如 a760 [Ꝡ])。转换器工作,但它保留 ' (撇号),我想消失。我需要将 T' 视为一个单位并在输出中保留一个单位

我想我尝试了我所知道的一切

<script>
    String.prototype.hexDecode = function () 
    {
        var j;
        var hexes = this.match( /.{1,4}/g ) || [];
        var back = "";
        var lexesLength=hexes.length;
        for ( j = 0; j < lexesLength; j++ ) 
        {
            back += String.fromCharCode( parseInt( hexes[ j ], 16 ) );
        }

        return back;
    }   

    String.prototype.hexEncode = function () 
    {
        var hex, i;

        var result = [];
        var length = this.length;
        for ( i = 0; i < length; i++ ) 
        {
            hex = this.charCodeAt( i ).toString( 16 );
            result.push( ( "000" + hex ).slice( -4 ) );
        }

        return result;
    }

    Array.prototype.romanceltic = function () 
    {
        var roman = ['005402bb', '0041'];

        var celtic = ['a760', 'A762'];

        var length = this.length;
        var answer = '';
        var char;
        var index;
        for (var i = 0; i < length; i++) {
            char = this[ i ];
            index = roman.indexOf( char );
            answer += ( index != -1 ) ? celtic [ index ].hexDecode() : char.hexDecode();
        }
        return answer;
    }

    $(function() 
    {
        $( "input" ).click( function ( e ) 
        {
            var answer;
            var content = $("#input").val();
            switch ( $( this ).attr( "id" ) ) 
            {
                case "romanceltic":
                    {
                        answer = content.hexEncode().romanceltic();
                    }
                break;                      
            }
            $("#output" ).val(answer);
        } )
    } );

</script>

类似的东西

我没有错误消息。它有效,但输出不是我正在等待的。据我了解,代码不能将“005402bb”视为一个整体。我想说输入是 T' ,输出是Ꝡ。换句话说,输入由两个字符(T+' 或任何其他 +')组成,而我想要得到的输出应该是一个字符(Ꝡ 或任何其他)。我另外插入了完整的脚本和另一个字符 A -> Ꝣ [A762] 并且您可以看到代码正确转换它,但我不明白第一个示例会发生什么,为什么我不能将 T+' 转换为 Ꝡ ?

标签: javascriptarraysunicodehex

解决方案


我已经阅读了代码,得出的结论是你把事情复杂化了。这似乎是一个穷人的输入法编辑器的实现。只需使用该replace方法。

var content = 'TʻA';
content = content.replace(/Tʻ/gu, 'Ꝡ');
content = content.replace(/A/gu, 'Ꝣ');
console.log(content);
// ꝠꝢ

推荐阅读