Javascript HexDecode//HexEncode

Javascript HexDecode//HexEncode,javascript,arrays,unicode,hex,Javascript,Arrays,Unicode,Hex,问题是我试图通过HexDecode和HexEncode将一个数组转换成另一个数组。在我尝试将两个字符(例如005002bb[拉丁字母T'])转换为一个字符(例如a760)之前,一切都很顺利[Ꝡ]. 转换器工作,但它保留了'(撇号),我希望它消失。我需要将T作为一个单位,并在输出中保留一个单位 我想我尝试了我所知道的一切 <script> String.prototype.hexDecode = function () { var j;

问题是我试图通过HexDecode和HexEncode将一个数组转换成另一个数组。在我尝试将两个字符(例如005002bb[拉丁字母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>

String.prototype.hexDecode=函数()
{
var j;
var hexes=this.match(/.{1,4}/g)| |[];
var back=“”;
var lexesLength=hexes.length;
对于(j=0;j
诸如此类

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

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


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



你能展示一个给定输入的预期输出样本吗?还要注意,
U+0054
是T,而不是P。确切地说,U+0054是T。我想说输入是T',输出是Ꝡ. 换句话说,输入由两个字符(T+'或任何其他+')组成,而我想要得到的输出应该是一个字符(Ꝡ (或任何其他)。请编辑问题以包括此示例。理想情况下,您应该显示一些调用函数的代码,显示如果函数按预期工作,它将返回什么。我看不出此代码如何工作-即使对于您暗示得到的部分结果-var
char
中的单个字符如何与编码的字节I匹配在
roman
数组中?我插入了整个脚本,我用它来转换字符和脚本中的附加字母,以表明它在字符到字符的转换方面起作用。你能显示一个给定输入的预期输出示例吗?还要注意
U+0054
是T,而不是P。确切地说,U+0054是T。我想y输入为T',输出为Ꝡ. 换句话说,输入由两个字符(T+'或任何其他+')组成,而我想要得到的输出应该是一个字符(Ꝡ (或任何其他)。请编辑问题以包括此示例。理想情况下,您应该显示一些调用函数的代码,显示如果函数按预期工作,它将返回什么。我看不出此代码如何工作-即使对于您暗示得到的部分结果-var
char
中的单个字符如何与编码的字节I匹配在
罗马
数组中?我插入了整个脚本,我用它来转换字符和脚本中的附加字母,以表明它在字符到字符的转换方面有效。非常感谢您的评论。您的选择当然更容易,我真的很感谢。但是,我想了解,为什么abo我提到的代码不工作,哪里有错误?(@Nikky,使用调试器。错误在
index=roman.indexOf(char)行)
其中char是string
0054
,它不是
roman
中的一个元素。真正的问题是每次前进1个字符,而您应该查看输入数据的长度,然后决定相应地前进多少个字符。非常感谢。似乎我很愚蠢。我必须使用val().length方法来确定它?如果不难,你能解释一下,我该如何更改它吗?至于replace方法,我尝试过。例如,content=content.replace(/Tʻ/g,'Tik')。replace(/A/g,'Ⴀk').replace(/P/g,'Pik').replace(/Pʻ/g,'Pak');但输出并不像我等待的那样,例如,它对Tʻ有效,但对Pʻ无效。在Pʻ的情况下,它返回带撇号的Pik。我知道也有P,但我需要将带撇号的P作为一个整体处理。我尝试了inse
var content = 'TʻA';
content = content.replace(/Tʻ/gu, 'Ꝡ');
content = content.replace(/A/gu, 'Ꝣ');
console.log(content);
// ꝠꝢ