日期:2014-05-17  浏览次数:20903 次

求助 DELPHI代码转为C#
就一个DELPHI的方法。用于将ISBN 13位数字转换为ISBN barcode 字体对应的字符串编码


{  函数名称:EAN13Code
   输入参数:ISBN13Str: string  说明:人工可读的ISBN13编码字符串
   输出参数:string 说明:用于输出打印条码字体相应的字符串
   说明: ISBN13字符串 转换为 ISBN barcode 字体对应的字符串编码,
         以便使用ISBN barcode字体打印相应条形码。
         该条形码字体包含三种条码字符集:
         数字       0 1 2 3 4 5 6 7 8 9
         A字符集    0 1 2 3 4 5 6 7 8 9
         B字符集    A B C D E F G H I J
         C字符集    K L M N O P Q R S T
         前置符集             u v w x y
         中间符     *
         起始符/中止符 (

         (9)   y
         后置符        >
         标准书号条形码格式:前置符 + 起始符 + 左侧数据符(ABBABA)+ 中间符
                             + 右侧数据符(CCCCCC)+ 中止符 + 后置符
         详细内容参考:GB/T 12906—2008 
 *}
function EAN13Code(ISBN13Str:string):string;
const
 ACharSet : array[0..9] of Char = ('0','1','2','3','4','5','6','7','8','9') ; //字符集A
 BCharSet : array[0..9] of Char = ('A','B','C','D','E','F','G','H','I','J') ; //字符集B
 CCharSet : array[0..9] of Char = ('K','L','M','N','O','P','Q','R','S','T') ; //字符集C
 HCharSet : array[5..9] of Char = ('u','v','w','x','y');//前置符集
var
 i: integer;
 EAN13Str : string;
begin

if length(ISBN13Str)<>13 then result := '' else
begin
 EAN13Str := HCharSet[StrToInt(ISBN13Str[1])] + '('
           + ACharSet[StrToInt(ISBN13Str[2])]
           + BCharSet[StrToInt(ISBN13Str[3])]
           + BCharSet[StrToInt(ISBN13Str[4])]
           + ACharSet[StrToInt(ISBN13Str[5])]
           + BCharSet[StrToInt(ISBN13Str[6])]
           + ACharSet[StrToInt(ISBN13Str[7])] + '*';
 for i := 8 to 13 do
   EAN13Str := EAN13Str + CCharSet[StrToInt(ISBN13Str[i])];
 EAN13Str := EAN13Str + '(>';

&