>웹 프론트엔드 >JS 튜토리얼 >jscript를 사용하여 바이너리 읽기 및 쓰기 스크립트 code_javascript 기술 구현

jscript를 사용하여 바이너리 읽기 및 쓰기 스크립트 code_javascript 기술 구현

WBOY
WBOY원래의
2016-05-16 19:03:561209검색

JScript에서 바이너리 파일에 액세스하는 좋은 방법이 있습니다. VBScript에서 이 객체에 액세스하려면 해당 객체를 SWF 파일에 넣으십시오. 이 개체는 Fury에서 웹 서비스에 파일을 업로드하는 데 사용되었으며 0-10MB 영역의 파일에 적합하고 빠른 것으로 입증되었습니다. /** 이는
이 Windows
* 운영 체제의 JScript에서 바이너리에 액세스할 수 있도록 허용하는 상당히 최적화된 개체입니다.
*파일 끝에는
* 작동 방식을 보여주는 작은 테스트 세트가 있습니다. adodb 2.5 이상이 필요합니다.
*이 기능은 대부분의 2000 머신과 모든 XP 이상
*머신에서 사용할 수 있습니다.
*
*저작권: Alexander J. Turner 박사 - 모든 권리 보유.
*이 코드를 원하는 방식으로 자유롭게 사용하세요.
*댓글에 참고할 위치가 있는 한
*작성: 제가 작성했습니다.
function BinaryFile(name)
{
    var adTypeBinary = 1 
    var adTypeText   = 2 
    var adSaveCreateOverWrite = 2
    // The trick - this is the 'old fassioned' not translation page
    // It lest javascript use strings to act like raw octets
    var codePage='437';

    this.path=name;

    var forward  = new Array();
    var backward = new Array();

    // Note - for better performance I should preconvert these hex
    // definitions to decimal - at some point :-) - AJT
    forward['80'] = '00C7';
    forward['81'] = '00FC';
    forward['82'] = '00E9';
    forward['83'] = '00E2';
    forward['84'] = '00E4';
    forward['85'] = '00E0';
    forward['86'] = '00E5';
    forward['87'] = '00E7';
    forward['88'] = '00EA';
    forward['89'] = '00EB';
    forward['8A'] = '00E8';
    forward['8B'] = '00EF';
    forward['8C'] = '00EE';
    forward['8D'] = '00EC';
    forward['8E'] = '00C4';
    forward['8F'] = '00C5';
    forward['90'] = '00C9';
    forward['91'] = '00E6';
    forward['92'] = '00C6';
    forward['93'] = '00F4';
    forward['94'] = '00F6';
    forward['95'] = '00F2';
    forward['96'] = '00FB';
    forward['97'] = '00F9';
    forward['98'] = '00FF';
    forward['99'] = '00D6';
    forward['9A'] = '00DC';
    forward['9B'] = '00A2';
    forward['9C'] = '00A3';
    forward['9D'] = '00A5';
    forward['9E'] = '20A7';
    forward['9F'] = '0192';
    forward['A0'] = '00E1';
    forward['A1'] = '00ED';
    forward['A2'] = '00F3';
    forward['A3'] = '00FA';
    forward['A4'] = '00F1';
    forward['A5'] = '00D1';
    forward['A6'] = '00AA';
    forward['A7'] = '00BA';
    forward['A8'] = '00BF';
    forward['A9'] = '2310';
    forward['AA'] = '00AC';
    forward['AB'] = '00BD';
    forward['AC'] = '00BC';
    forward['AD'] = '00A1';
    forward['AE'] = '00AB';
    forward['AF'] = '00BB';
    forward['B0'] = '2591';
    forward['B1'] = '2592';
    forward['B2'] = '2593';
    forward['B3'] = '2502';
    forward['B4'] = '2524';
    forward['B5'] = '2561';
    forward['B6'] = '2562';
    forward['B7'] = '2556';
    forward['B8'] = '2555';
    forward['B9'] = '2563';
    forward['BA'] = '2551';
    forward['BB'] = '2557';
    forward['BC'] = '255D';
    forward['BD'] = '255C';
    forward['BE'] = '255B';
    forward['BF'] = '2510';
    forward['C0'] = '2514';
    forward['C1'] = '2534';
    forward['C2'] = '252C';
    forward['C3'] = '251C';
    forward['C4'] = '2500';
    forward['C5'] = '253C';
    forward['C6'] = '255E';
    forward['C7'] = '255F';
    forward['C8'] = '255A';
    forward['C9'] = '2554';
    forward['CA'] = '2569';
    forward['CB'] = '2566';
    forward['CC'] = '2560';
    forward['CD'] = '2550';
    forward['CE'] = '256C';
    forward['CF'] = '2567';
    forward['D0'] = '2568';
    forward['D1'] = '2564';
    forward['D2'] = '2565';
    forward['D3'] = '2559';
    forward['D4'] = '2558';
    forward['D5'] = '2552';
    forward['D6'] = '2553';
    forward['D7'] = '256B';
    forward['D8'] = '256A';
    forward['D9'] = '2518';
    forward['DA'] = '250C';
    forward['DB'] = '2588';
    forward['DC'] = '2584';
    forward['DD'] = '258C';
    forward['DE'] = '2590';
    forward['DF'] = '2580';
    forward['E0'] = '03B1';
    forward['E1'] = '00DF';
    forward['E2'] = '0393';
    forward['E3'] = '03C0';
    forward['E4'] = '03A3';
    forward['E5'] = '03C3';
    forward['E6'] = '00B5';
    forward['E7'] = '03C4';
    forward['E8'] = '03A6';
    forward['E9'] = '0398';
    forward['EA'] = '03A9';
    forward['EB'] = '03B4';
    forward['EC'] = '221E';
    forward['ED'] = '03C6';
    forward['EE'] = '03B5';
    forward['EF'] = '2229';
    forward['F0'] = '2261';
    forward['F1'] = '00B1';
    forward['F2'] = '2265';
    forward['F3'] = '2264';
    forward['F4'] = '2320';
    forward['F5'] = '2321';
    forward['F6'] = '00F7';
    forward['F7'] = '2248';
    forward['F8'] = '00B0';
    forward['F9'] = '2219';
    forward['FA'] = '00B7';
    forward['FB'] = '221A';
    forward['FC'] = '207F';
    forward['FD'] = '00B2';
    forward['FE'] = '25A0';
    forward['FF'] = '00A0';
    backward['C7']   = '80';
    backward['FC']   = '81';
    backward['E9']   = '82';
    backward['E2']   = '83';
    backward['E4']   = '84';
    backward['E0']   = '85';
    backward['E5']   = '86';
    backward['E7']   = '87';
    backward['EA']   = '88';
    backward['EB']   = '89';
    backward['E8']   = '8A';
    backward['EF']   = '8B';
    backward['EE']   = '8C';
    backward['EC']   = '8D';
    backward['C4']   = '8E';
    backward['C5']   = '8F';
    backward['C9']   = '90';
    backward['E6']   = '91';
    backward['C6']   = '92';
    backward['F4']   = '93';
    backward['F6']   = '94';
    backward['F2']   = '95';
    backward['FB']   = '96';
    backward['F9']   = '97';
    backward['FF']   = '98';
    backward['D6']   = '99';
    backward['DC']   = '9A';
    backward['A2']   = '9B';
    backward['A3']   = '9C';
    backward['A5']   = '9D';
    backward['20A7'] = '9E';
    backward['192']  = '9F';
    backward['E1']   = 'A0';
    backward['ED']   = 'A1';
    backward['F3']   = 'A2';
    backward['FA']   = 'A3';
    backward['F1']   = 'A4';
    backward['D1']   = 'A5';
    backward['AA']   = 'A6';
    backward['BA']   = 'A7';
    backward['BF']   = 'A8';
    backward['2310'] = 'A9';
    backward['AC']   = 'AA';
    backward['BD']   = 'AB';
    backward['BC']   = 'AC';
    backward['A1']   = 'AD';
    backward['AB']   = 'AE';
    backward['BB']   = 'AF';
    backward['2591'] = 'B0';
    backward['2592'] = 'B1';
    backward['2593'] = 'B2';
    backward['2502'] = 'B3';
    backward['2524'] = 'B4';
    backward['2561'] = 'B5';
    backward['2562'] = 'B6';
    backward['2556'] = 'B7';
    backward['2555'] = 'B8';
    backward['2563'] = 'B9';
    backward['2551'] = 'BA';
    backward['2557'] = 'BB';
    backward['255D'] = 'BC';
    backward['255C'] = 'BD';
    backward['255B'] = 'BE';
    backward['2510'] = 'BF';
    backward['2514'] = 'C0';
    backward['2534'] = 'C1';
    backward['252C'] = 'C2';
    backward['251C'] = 'C3';          
    backward['2500'] = 'C4';
    backward['253C'] = 'C5';
    backward['255E'] = 'C6';
    backward['255F'] = 'C7';
    backward['255A'] = 'C8';
    backward['2554'] = 'C9';
    backward['2569'] = 'CA';
    backward['2566'] = 'CB';
    backward['2560'] = 'CC';
    backward['2550'] = 'CD';
    backward['256C'] = 'CE';
    backward['2567'] = 'CF';
    backward['2568'] = 'D0';
    backward['2564'] = 'D1';
    backward['2565'] = 'D2';
    backward['2559'] = 'D3';
    backward['2558'] = 'D4';
    backward['2552'] = 'D5';
    뒤로['2553'] = 'D6';
    뒤로['256B'] = 'D7';
    뒤로['256A'] = 'D8';
    backward['2518'] = 'D9';
    backward['250C'] = 'DA';
    backward['2588'] = 'DB';
    backward['2584'] = 'DC';
    뒤로['258C'] = 'DD';
    backward['2590'] = 'DE';
    backward['2580'] = 'DF';
    뒤로['3B1']  = 'E0';
    뒤로['DF']   = 'E1';
    뒤로['393']  = 'E2';
    뒤로['3C0']  = 'E3';
    뒤로['3A3']  = 'E4';
    뒤로['3C3']  = 'E5';
    뒤로['B5']   = 'E6';
    뒤로['3C4']  = 'E7';
    뒤로['3A6']  = 'E8';
    뒤로['398']  = 'E9';
    backward['3A9']  = 'EA';
    뒤로['3B4']  = 'EB';                                                              
    backward['221E'] = 'EC';
    뒤로['3C6']  = 'ED';
    뒤로['3B5']  = 'EE';
    backward['2229'] = 'EF';
    뒤로['2261'] = 'F0';
    뒤로['B1']   = 'F1';
    뒤로['2265'] = 'F2';
    뒤로['2264'] = 'F3';
    뒤로['2320'] = 'F4';
    뒤로['2321'] = 'F5';
    뒤로['F7']   = 'F6';
    뒤로['2248'] = 'F7';
    뒤로['B0']   = 'F8';
    뒤로['2219'] = 'F9';
    뒤로['B7']   = 'FA';
    backward['221A'] = 'FB';
    backward['207F'] = 'FC';
    뒤로['B2']   = 'FD';
    backward['25A0'] = 'FE';
    뒤로['A0']   = 'FF';     

    var hD="0123456789ABCDEF";
    this.d2h = function(d)
    {
        var h = hD.substr(d&15,1);
        while(d>15) {d>>=4;h=hD.substr(d&15,1) h;}
        return h;
    }

    this.h2d = function(h)
    {
        return parseInt(h,16);
    }

    this.WriteAll = 함수(무엇)
    {
        //스트림 개체 만들기
        var BinaryStream = WScript.CreateObject("ADODB.Stream");
        //스트림 유형 지정 - 우리는 속이고 문자열을 얻지만 '좋아요' 바이너리
        BinaryStream.Type = adTypeText;
        BinaryStream.CharSet = '437';         
        //스트림 열기
        BinaryStream.Open();
        // 스트림에 쓰기
        BinaryStream.WriteText(this.Forward437(what));
        // 문자열을 디스크에 씁니다.
        BinaryStream.SaveToFile(this.path, adSaveCreateOverWrite);

        //정리
        BinaryStream.Close();
    }

    this.ReadAll  = function()
    {
        //스트림 개체 만들기 - ADO 2.5 이상 필요
        var BinaryStream = WScript.CreateObject("ADODB. 스트림" )
        //스트림 유형 지정 - 우리는 속임수를 써서 문자열을 얻지만 '좋아요' 바이너리
        BinaryStream.Type = adTypeText;
        BinaryStream.CharSet = codePage;
        //스트림 열기
        BinaryStream.Open();
        //디스크에서 파일 데이터를 스트리밍 개체로 로드
        BinaryStream.LoadFromFile(this.path);
        //스트림을 열고 개체에서 바이너리 '문자열'을 가져옵니다.
        var what= BinaryStream.ReadText;
        // 정리 
        BinaryStream.Close();
        이것을 반환하세요.Backward437(what);
    }

    /* 옥텟 숫자를 코드 페이지 437 문자 코드로 변환*/
    this.Forward437 = function(inString)
      var encArray = new 배열( ) ;
        var tmp='';
        var i=0;
        var c=0;
        var l=inString.length;
        var cc;
        var h;
        for(;i        {             c ;
            if(c==128)
            {
               encArray.push(tmp);
                tmp='';
                c=0;
            }
            cc=inString.charCodeAt(i);
            if(cc            {
               tmp =String.fromCharCode(cc);
           }      
            else
            {
               h=this.d2h(cc);
                h=앞으로['' h];
                tmp =String.fromCharCode(this.h2d(h));
           }
        }
        if(tmp!='')
        {
            encArray.push(tmp);
        }

        // 이 루프는
       // 배열 요소가 하나만 있을 때까지 연결합니다
        var ar2=new Array();
        for(;encArray.length>1;)
        {
            var l=encArray.length;
            for(var c=0;c           {
              if(c 1==l)
         
                    ar2.push(encArray[c]);
               }
                그렇지 않으면
               {
                 ar2.push('' encArray[c] encArray[c 1]);
               }
            }
            encArray=ar2;
            ar2=new Array();
        }
        return encArray[0];
    }
    /* 코드 페이지 437 문자 코드를 옥텟 숫자로 변환*/
    this.Backward437 = function(inString)
    {
        var encArray = new Array();
        var tmp='';
        var i=0;
        var c=0;
        var l=inString.length;
        var cc;
        var h;
        for(;i        {
            c ;
            if(c==128)
            {
               encArray.push(tmp);
                tmp='';
                c=0;
            }
            cc=inString.charCodeAt(i);
            if(cc            {
               tmp =String.fromCharCode(cc);
            }
            else
            {
               h=this.d2h(cc);
                h=뒤로['' h];
                tmp =String.fromCharCode(this.h2d(h));
           }
        }
        if(tmp!='')
        {
            encArray.push(tmp);
        }

        // 이 루프는
       // 배열 요소가 하나만 있을 때까지 연결합니다
        var ar2=new Array();
        for(;encArray.length>1;)
        {
            var l=encArray.length;
            for(var c=0;c           {
              if(c 1==l)
         
                    ar2.push(encArray[c]);
               }
                그렇지 않으면
               {
                 ar2.push('' encArray[c] encArray[c 1]);
               }
            }
            encArray=ar2;
            ar2=new Array();
        }
        return encArray[0];
    }

}

// 사용 방법:
/*
var bf0=new BinaryFile();
var crFolder = 'C:/Temp/cr'
var bf1=new BinaryFile(crFolder "/PCDV0026.JPG");
var bf2=new BinaryFile(crFolder "/PCDV0026_.JPG");
bf2.WriteAll(bf1.ReadAll());
*/

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.