b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pdf417条码_pdf417条码编码原理_pdf417条码(2)

电脑杂谈  发布时间:2017-03-12 15:08:59  来源:网络整理

Output:

"Hello, world!" requires 9 code-words, and 2 error correction code-words. This becomes 2 rows.

本文地址:IT屋 » In a PDF417 barcode where number of columns are fixed, how would I calculate the number of rows required for some text?

我需要生成一些文本PDF417条码code。我有一个API(我没有创建)生成给出的数据的PDF417条码code,行数和列数(在其他参数无关的问题)的数量。

我的PDF417条码code使用文本编码。这意味着1 codeword最多可以容纳2个字符。现在,列的数量是固定的,因为我打印这个吧code在一个非常有限的空间。pdf417条码

下面是我从本文(参见第38页有推断 - 浆纱酒吧code):

让一些每行codewords, CWPerRow = 7。pdf417条码

所需要的某些给定的文本codewords号, ReqCW =的strlen(文本)/ 2。

所需的行数= ReqCW / CWPerRow

当我测试上面的算法,不显示任何内容。当我用同样的API时的数据非常小,行数= 25,酒吧code打印就好了(由不同吧code扫描仪验证)。

那么,如何计算需要时列数是已知的某些给定的文本行数?

解决方案

您可以看看一些PDF417执行源 - code,如 ZXing 。

文本编码是不是每个code字只是两个字符。如果您使用的不是大写字母和空间的任何其它字符,EN codeR将增加额外的字符切换字符集等你真的要恩code文本,看看有多少code-的话就会变成。

公共类测试 {     公共静态无效的主要(字串[] args)     {         弦乐味精=“你好,世界!”;         INT列= 7;         INT源$ C ​​$ cWords = calculateSource codeWords(MSG);         INT误差纠正codeWords = getErrorCorrection codewordCount(0);         诠释行= calculateNumberOfRows(来源$ C ​​$ cWords,误差纠正codeWords,列);         System.out.printf(“\”%s \“的要求%D code字,和%D纠错code字。这将成为%D行。%N”,                 味精,源$ C ​​$ cWords,误差纠正codeWords,行);     }     公共静态INT calculateNumberOfRows(INT源$ C ​​$ cWords,诠释误差纠正codeWords,诠释列){         INT行数=((来源$ C ​​$ cWords + 1 +误差纠正codeWords)/列)+ 1;         如果(列*行> =(来源$ C ​​$ cWords + 1 +误差纠正codeWords +列)){             rows--;         }         返回行;     }     公共静态INT getErrorCorrection codewordCount(INT errorCorrectionLevel){         如果(errorCorrectionLevel℃,|| errorCorrectionLevel→8){             抛出新抛出:IllegalArgumentException(“纠错等级必须介于0和8!”);         }         返回1<< (errorCorrectionLevel + 1);     }     私有静态布尔isAlphaUpper(焦CH){         返回CH ==''|| (CH> ='A'和;&安培; CH< ='Z');     }     私有静态布尔isAlphaLower(焦CH){         返回CH ==''|| (CH> ='A'和;&安培; CH< ='Z');     }     私有静态布尔isMixed(焦CH){         回报“。\ t \ r#$%&放大器; * +, - / 0123456789:= ^”的indexOf(CH)>。 -1;     }     私有静态布尔isPunctuation(焦CH){         回归“\ t \ñ\ r \!”$“()*, - /:;?<> @ [\\] _`{|}〜”.indexOf(CH)> -1;     }     私有静态最终诠释SUBMODE_ALPHA = 0;     私有静态最终诠释SUBMODE_LOWER = 1;     私有静态最终诠释SUBMODE_MIXED = 2;     私有静态最终诠释SUBMODE_PUNCTUATION = 3;     公共静态INT calculateSource codeWords(弦乐味精)     {         INT的len = 0;         INT子模式= SUBMODE_ALPHA;         INT msgLength = msg.length();         对于(INT IDX = 0; IDX< msgLength)         {             焦炭CH = msg.charAt(IDX);             开关(子模式)             {                 案例SUBMODE_ALPHA:                     如果(isAlphaUpper(CH))                     {                         LEN ++;                     }                     其他                     {                         如果(isAlphaLower(CH))                         {                             子模式= SUBMODE_LOWER;                             LEN ++;                             继续;                         }                         否则,如果(isMixed(CH))                         {                             子模式= SUBMODE_MIXED;                             LEN ++;                             继续;                         }                         其他                         {                             LEN + = 2;                             打破;                         }                     }                     打破;                 案例SUBMODE_LOWER:                     如果(isAlphaLower(CH))                     {                         LEN ++;                     }                     其他                     {                         如果(isAlphaUpper(CH))                         {                             LEN + = 2;                             打破;                         }                         否则,如果(isMixed(CH))                         {                             子模式= SUBMODE_MIXED;                             LEN ++;                             继续;                         }                         其他                         {                             LEN + = 2;                             打破;                         }                     }                     打破;                 案例SUBMODE_MIXED:                     如果(isMixed(CH))                     {                         LEN ++;                     }                     其他                     {                         如果(isAlphaUpper(CH))                         {                             子模式= SUBMODE_ALPHA;                             LEN ++;                             继续;                         }                         否则,如果(isAlphaLower(CH))                         {                             子模式= SUBMODE_LOWER;                             LEN ++;                             继续;                         }                         其他                         {                             如果(IDX + 1所述; msgLength)                             {                                 炭下一= msg.charAt(IDX + 1);                                 如果(isPunctuation(下))                                 {                                     子模式= SUBMODE_PUNCTUATION;                                     LEN ++;                                     继续;                                 }                             }                             LEN + = 2;                         }                     }                     打破;                 默认:                     如果(isPunctuation(CH))                     {                         LEN ++;                     }                     其他                     {                         子模式= SUBMODE_ALPHA;                         LEN ++;                         继续;                     }                     打破;             }             IDX ++; //不要增加,如果'继续'被使用。         }         返回(LEN + 1)/ 2;     } }

输出:

“你好,世界!”需要9 code字,和2纠错code字。这将成为2行。

本文地址:IT屋 » 在PDF417条码code其中列数是固定的,我怎么会计算所需的一些文本行数?


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-37114-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...