EBCDIC 轉 BIG5 |
尚未結案
|
liu3036
一般會員 發表:4 回覆:0 積分:0 註冊:2005-09-18 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
http://www.efg2.com/Lab/Library/Delphi/Miscellany/SteveAgnew_EBCDIC_%20ASCII.txt
unit EBCDIC; //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - INTERFACE //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PROCEDURE Ebcdic2Ascii( Var Buffer; Count : Cardinal ); PROCEDURE Ascii2Ebcdic( Var Buffer; Count : Cardinal ); //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPLEMENTATION //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Const E2ATable : Array[ 0..255 ] of Byte = ( $00,$01,$02,$03,$20,$09,$20,$7F,$20,$20,$20,$0B,$0C,$0D,$0E,$0F, $10,$11,$12,$20,$20,$20,$08,$20,$18,$19,$20,$20,$1C,$1D,$1E,$1F, $20,$20,$1C,$20,$20,$0A,$17,$1B,$20,$20,$20,$20,$20,$05,$06,$07, $20,$20,$16,$20,$20,$1E,$20,$04,$20,$20,$20,$20,$14,$15,$20,$20, $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2E,$3C,$28,$2B,$7C, $26,$20,$20,$20,$20,$20,$20,$20,$20,$20,$21,$24,$2A,$29,$3B,$7E, $2D,$2F,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2C,$25,$20,$3E,$3F, $20,$20,$20,$20,$20,$20,$20,$20,$20,$60,$3A,$23,$40,$60,$3D,$22, $20,$61,$62,$63,$64,$65,$66,$67,$68,$69,$20,$20,$20,$20,$20,$20, $20,$6A,$6B,$6C,$6D,$6E,$6F,$70,$71,$72,$20,$20,$20,$20,$20,$20, $20,$20,$73,$74,$75,$76,$77,$78,$79,$7A,$20,$20,$20,$20,$20,$20, $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20, $7B,$41,$42,$43,$44,$45,$46,$47,$48,$49,$20,$20,$20,$20,$20,$20, $7D,$4A,$4B,$4C,$4D,$4E,$4F,$50,$51,$52,$20,$20,$20,$20,$20,$20, $20,$20,$53,$54,$55,$56,$57,$58,$59,$5A,$20,$20,$20,$20,$20,$20, $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$20,$20,$20,$20,$20,$20 ); A2ETable : Array[ 0..255 ] of Byte = ( $00,$01,$02,$03,$37,$2D,$2E,$2F,$16,$05,$25,$0B,$0C,$0D,$0E,$0F, $10,$11,$12,$13,$3C,$3D,$32,$26,$18,$19,$3F,$27,$1C,$1D,$1E,$1F, $40,$5A,$7F,$7B,$5B,$6C,$50,$7D,$4D,$5D,$5C,$4E,$6B,$60,$4B,$61, $F0,$F1,$F2,$F3,$F4,$F5,$F6,$F7,$F8,$F9,$7A,$5E,$4C,$7E,$6E,$6F, $7C,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,$D1,$D2,$D3,$D4,$D5,$D6, $D7,$D8,$D9,$E2,$E3,$E4,$E5,$E6,$E7,$E8,$E9,$5B,$E0,$5D,$5E,$6D, $79,$81,$82,$83,$84,$85,$86,$87,$88,$89,$91,$92,$93,$94,$95,$96, $97,$98,$99,$A2,$A3,$A4,$A5,$A6,$A7,$A8,$A9,$C0,$6A,$D0,$5F,$07, $00,$01,$02,$03,$37,$2D,$2E,$2F,$16,$05,$25,$0B,$0C,$0D,$0E,$0F, $10,$11,$12,$13,$3C,$3D,$32,$26,$18,$19,$3F,$27,$1C,$1D,$1E,$1F, $40,$5A,$7F,$7B,$5B,$6C,$50,$7D,$4D,$5D,$5C,$4E,$6B,$60,$4B,$61, $F0,$F1,$F2,$F3,$F4,$F5,$F6,$F7,$F8,$F9,$7A,$5E,$4C,$7E,$6E,$6F, $7C,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,$D1,$D2,$D3,$D4,$D5,$D6, $D7,$D8,$D9,$E2,$E3,$E4,$E5,$E6,$E7,$E8,$E9,$5B,$E0,$5D,$5E,$6D, $79,$81,$82,$83,$84,$85,$86,$87,$88,$89,$91,$92,$93,$94,$95,$96, $97,$98,$99,$A2,$A3,$A4,$A5,$A6,$A7,$A8,$A9,$C0,$6A,$D0,$5F,$07 ); //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PROCEDURE Ebcdic2Ascii( Var Buffer; Count : Cardinal ); register; asm push edi push esi push ebx { On Entry, eax is a pointer to the Buffer } { edx is Count } or edx, edx { Anything to do? } jz @@Done mov ecx, edx { Put the count into ecx } mov edx, eax { Use [edx] as the buffer pointer } lea ebx, E2ATable @@Loop: mov al, [edx] xlat mov [edx], al inc edx Loop @@Loop { Repeat until ecx = 0 } @@Done: pop ebx pop esi pop edi end; //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PROCEDURE Ascii2Ebcdic( Var Buffer; Count : Cardinal ); register; asm push edi push esi push ebx { On Entry, eax is a pointer to the Buffer } { edx is Count } or edx, edx { Anything to do? } jz @@Done mov ecx, edx { Put the count into ecx } mov edx, eax { Use [edx] as the buffer pointer } lea ebx, A2ETable @@Loop: mov al, [edx] xlat mov [edx], al inc edx Loop @@Loop { Repeat until ecx = 0 } @@Done: pop ebx pop esi pop edi end; end.網海無涯,唯學是岸! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |