亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iec16022ecc200.c

?? IEC16022 bar code generation library and RS encode
?? C
?? 第 1 頁 / 共 3 頁
字號:
               }
               w = strchr (e, c);
               if (w)
                  out[p++] = ((w - e) + 3) % 40;
               else
               {
                  if (newenc == 'x')
                  {
                     fprintf (stderr, "Cannot encode char 0x%02X in X12\n", c);
                     return 0;
                  }
                  if (c < 32)
                  {             // shift 1
                     out[p++] = 0;
                     out[p++] = c;
                  } else
                  {
                     w = strchr (s2, c);
                     if (w)
                     {          // shift 2
                        out[p++] = 1;
                        out[p++] = (w - s2);
                     } else
                     {
                        w = strchr (s3, c);
                        if (w)
                        {
                           out[p++] = 2;
                           out[p++] = (w - s3);
                        } else
                        {
                           fprintf (stderr, "Could not encode 0x%02X, should not happen\n", c);
                           return 0;
                        }
                     }
                  }
               }
               if (p == 2 && tp + 2 == tl && sp == sl)
                  out[p++] = 0; // shift 1 pad at end
               while (p >= 3)
               {
                  int v = out[0] * 1600 + out[1] * 40 + out[2] + 1;
                  if (enc != newenc)
                  {
                     if (enc == 'c' || enc == 't' || enc == 'x')
                        t[tp++] = 254;  // escape C40/text/X12
                     else if (enc == 'x')
                        t[tp++] = 0x7C; // escape EDIFACT
                     if (newenc == 'c')
                        t[tp++] = 230;
                     if (newenc == 't')
                        t[tp++] = 239;
                     if (newenc == 'x')
                        t[tp++] = 238;
                     enc = newenc;
                  }
                  t[tp++] = (v >> 8);
                  t[tp++] = (v & 0xFF);
                  p -= 3;
                  out[0] = out[3];
                  out[1] = out[4];
                  out[2] = out[5];
               }
            }
            while (p && sp < sl);
         }
         break;
      case 'e':                // EDIFACT
         {
            unsigned char out[4],
              p = 0;
            if (enc != newenc)
            {                   // can only be from C40/Text/X12
               t[tp++] = 254;
               enc = 'a';
            }
            while (sp < sl && tolower (encoding[sp]) == 'e' && p < 4)
               out[p++] = s[sp++];
            if (p < 4)
            {
               out[p++] = 0x1F;
               enc = 'a';
            }                   // termination
            t[tp] = ((s[0] & 0x3F) << 2);
            t[tp++] |= ((s[1] & 0x30) >> 4);
            t[tp] = ((s[1] & 0x0F) << 4);
            if (p == 2)
               tp++;
            else
            {
               t[tp++] |= ((s[2] & 0x3C) >> 2);
               t[tp] = ((s[2] & 0x03) << 6);
               t[tp++] |= (s[3] & 0x3F);
            }
         }
         break;
      case 'a':                // ASCII
         if (enc != newenc)
         {
            if (enc == 'c' || enc == 't' || enc == 'x')
               t[tp++] = 254;   // escape C40/text/X12
            else
               t[tp++] = 0x7C;  // escape EDIFACT
         }
         enc = 'a';
         if (sl - sp >= 2 && isdigit (s[sp]) && isdigit (s[sp + 1]))
         {
            t[tp++] = (s[sp] - '0') * 10 + s[sp + 1] - '0' + 130;
            sp += 2;
         } else if (s[sp] > 127)
         {
            t[tp++] = 235;
            t[tp++] = s[sp++] - 127;
         } else
            t[tp++] = s[sp++] + 1;
         break;
      case 'b':                // Binary
         {
            int l = 0;          // how much to encode
            if (encoding)
            {
               int p;
               for (p = sp; p < sl && tolower (encoding[p]) == 'b'; p++)
                  l++;
            }
            t[tp++] = 231;      // base256
            if (l < 250)
               t[tp++] = l;
            else
            {
               t[tp++] = 249 + (l / 250);
               t[tp++] = (l % 250);
            }
            while (l-- && tp < tl)
            {
               t[tp] = s[sp++] + (((tp + 1) * 149) % 255) + 1;  // see annex H
               tp++;
            }
            enc = 'a';          // reverse to ASCII at end
         }
         break;
      default:
         fprintf (stderr, "Unknown encoding %c\n", newenc);
         return 0;              // failed
      }
   }
   if (lenp)
      *lenp = tp;
   if (tp < tl && enc != 'a')
   {
      if (enc == 'c' || enc == 'x' || enc == 't')
         t[tp++] = 254;         // escape X12/C40/Text
      else
         t[tp++] = 0x7C;        // escape EDIFACT
   }
   if (tp < tl)
      t[tp++] = 129;            // pad
   while (tp < tl)
   {                            // more padding
      int v = 129 + (((tp + 1) * 149) % 253) + 1;       // see Annex H
      if (v > 254)
         v -= 254;
      t[tp++] = v;
   }
   if (tp > tl || sp < sl)
      return 0;                 // did not fit
   //for (tp = 0; tp < tl; tp++) fprintf (stderr, "%02X ", t[tp]); fprintf (stderr, "\n");
   return 1;                    // OK 
}

// Auto encoding format functions
static char encchr[] = "ACTXEB";

enum
{
   E_ASCII,
   E_C40,
   E_TEXT,
   E_X12,
   E_EDIFACT,
   E_BINARY,
   E_MAX
};

unsigned char switchcost[E_MAX][E_MAX] = {
   0, 1, 1, 1, 1, 2,            // From E_ASCII
   1, 0, 2, 2, 2, 3,            // From E_C40
   1, 2, 0, 2, 2, 3,            // From E_TEXT
   1, 2, 2, 0, 2, 3,            // From E_X12
   1, 2, 2, 2, 0, 3,            // From E_EDIFACT
   0, 1, 1, 1, 1, 0,            // From E_BINARY
};

// Creates a encoding list (malloc)
// returns encoding string
// if lenp not null, target len stored
// if error, null returned
// if exact specified, then assumes shortcuts applicable for exact fit in target
// 1. No unlatch to return to ASCII for last encoded byte after C40 or Text or X12
// 2. No unlatch to return to ASCII for last 1 or 2 encoded bytes after EDIFACT
// 3. Final C40 or text encoding exactly in last 2 bytes can have a shift 0 to pad to make a tripple
// Only use the encoding from an exact request if the len matches the target, otherwise free the result and try again with exact=0
static char *
encmake (int l, unsigned char *s, int *lenp, char exact)
{
   char *encoding = 0;
   int p = l;
   char e;
   struct
   {
      short s;                  // number of bytes of source that can be encoded in a row at this point using this encoding mode
      short t;                  // number of bytes of target generated encoding from this point to end if already in this encoding mode
   } enc[MAXBARCODE][E_MAX];
   memset (&enc, 0, sizeof (enc));
   if (!l)
      return "";                // no length
   if (l > MAXBARCODE)
      return 0;                 // not valid
   while (p--)
   {
      char b = 0,
         sub;
      int sl,
        tl,
        bl,
        t;
      // consider each encoding from this point
      // ASCII
      sl = tl = 1;
      if (isdigit (s[p]) && p + 1 < l && isdigit (s[p + 1]))
         sl = 2;                // double digit
      else if (s[p] & 0x80)
         tl = 2;                // high shifted
      bl = 0;
      if (p + sl < l)
         for (e = 0; e < E_MAX; e++)
            if (enc[p + sl][e].t && ((t = enc[p + sl][e].t + switchcost[E_ASCII][e]) < bl || !bl))
            {
               bl = t;
               b = e;
            }
      enc[p][E_ASCII].t = tl + bl;
      enc[p][E_ASCII].s = sl;
      if (bl && b == E_ASCII)
         enc[p][b].s += enc[p + sl][b].s;
      // C40
      sub = tl = sl = 0;
      do
      {
         unsigned char c = s[p + sl++];
         if (c & 0x80)
         {                      // shift + upper
            sub += 2;
            c &= 0x7F;
         }
         if (c != ' ' && !isdigit (c) && !isupper (c))
            sub++;              // shift
         sub++;
         while (sub >= 3)
         {
            sub -= 3;
            tl += 2;
         }
      } while (sub && p + sl < l);
      if (exact && sub == 2 && p + sl == l)
      {                         // special case, can encode last block with shift 0 at end (Is this valid when not end of target buffer?)
         sub = 0;
         tl += 2;
      }
      if (!sub)
      {                         // can encode C40
         bl = 0;
         if (p + sl < l)
            for (e = 0; e < E_MAX; e++)
               if (enc[p + sl][e].t && ((t = enc[p + sl][e].t + switchcost[E_C40][e]) < bl || !bl))
               {
                  bl = t;
                  b = e;
               }
         if (exact && enc[p + sl][E_ASCII].t == 1 && 1 < bl)
         {                      // special case, switch to ASCII for last bytes
            bl = 1;
            b = E_ASCII;
         }
         enc[p][E_C40].t = tl + bl;
         enc[p][E_C40].s = sl;
         if (bl && b == E_C40)
            enc[p][b].s += enc[p + sl][b].s;
      }
      // Text
      sub = tl = sl = 0;
      do
      {
         unsigned char c = s[p + sl++];
         if (c & 0x80)
         {                      // shift + upper
            sub += 2;
            c &= 0x7F;
         }
         if (c != ' ' && !isdigit (c) && !islower (c))
            sub++;              // shift
         sub++;
         while (sub >= 3)
         {
            sub -= 3;
            tl += 2;
         }
      } while (sub && p + sl < l);
      if (exact && sub == 2 && p + sl == l)
      {                         // special case, can encode last block with shift 0 at end (Is this valid when not end of target buffer?)
         sub = 0;
         tl += 2;
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久久精品| 日本伊人午夜精品| 99国内精品久久| 国产精品污污网站在线观看 | 国产亚洲视频系列| 粉嫩aⅴ一区二区三区四区五区| 欧美激情中文不卡| 91免费观看在线| 亚洲成av人片观看| 精品区一区二区| www.日韩av| 亚洲成av人在线观看| 精品美女一区二区| 从欧美一区二区三区| 亚洲精品中文在线影院| 欧美日韩视频在线观看一区二区三区| 奇米精品一区二区三区四区| 精品成人a区在线观看| eeuss国产一区二区三区| 亚洲电影激情视频网站| 欧美刺激午夜性久久久久久久 | 蜜臀国产一区二区三区在线播放| 亚洲精品一区二区三区福利| 91在线porny国产在线看| 亚洲图片欧美综合| 久久人人97超碰com| 在线免费观看视频一区| 麻豆久久一区二区| 中文字幕一区日韩精品欧美| 欧美精品日韩一区| 成人app在线| 青青草97国产精品免费观看 | 亚洲乱码中文字幕| 欧美成人女星排名| 在线一区二区三区四区五区| 国产曰批免费观看久久久| 亚洲欧美另类在线| 欧美精品一区二区三区蜜臀 | 99久久99久久免费精品蜜臀| 免费人成在线不卡| 亚洲精品成人在线| 久久日一线二线三线suv| 欧美人妇做爰xxxⅹ性高电影| eeuss鲁片一区二区三区| 美国十次综合导航| 偷拍与自拍一区| 亚洲免费av高清| 国产精品私人自拍| 久久综合九色欧美综合狠狠| 欧美日韩免费电影| 色丁香久综合在线久综合在线观看| 韩国一区二区在线观看| 日精品一区二区三区| 国产精品美女一区二区在线观看| 精品久久免费看| 欧美一级黄色录像| 欧美日韩国产一二三| 色av成人天堂桃色av| 大尺度一区二区| 国产激情91久久精品导航| 久久国产精品72免费观看| 五月天婷婷综合| 亚洲成人av一区二区| 亚洲国产综合91精品麻豆| 亚洲欧美在线aaa| 国产精品丝袜久久久久久app| 精品欧美一区二区三区精品久久| 欧美一级一区二区| 91精品婷婷国产综合久久性色| 91福利视频久久久久| 色偷偷一区二区三区| 91蜜桃在线观看| 91麻豆文化传媒在线观看| 成人18精品视频| 成年人午夜久久久| 成人av综合一区| 色综合 综合色| 欧美三级电影在线观看| 欧美日韩免费观看一区三区| 欧美日韩的一区二区| 91精品国产黑色紧身裤美女| 欧美tickling网站挠脚心| 2023国产一二三区日本精品2022| 久久久精品综合| 国产精品久久久久久久久动漫| 中文字幕一区二区日韩精品绯色| 亚洲黄色在线视频| 亚洲成a人片综合在线| 奇米精品一区二区三区在线观看一| 老司机精品视频一区二区三区| 韩国一区二区视频| 波多野洁衣一区| 欧美色老头old∨ideo| 欧美一区二区三区人| 久久精品亚洲乱码伦伦中文| 国产精品福利影院| 亚洲国产成人av| 久久精品国产999大香线蕉| 国产精品一区二区视频| 91免费版在线| 日韩欧美一区二区视频| 国产精品丝袜在线| 午夜国产精品一区| 国产老妇另类xxxxx| 94-欧美-setu| 9191精品国产综合久久久久久| 亚洲精品一区二区三区香蕉 | 欧美精品精品一区| 久久亚洲私人国产精品va媚药| 日韩美女啊v在线免费观看| 日本视频中文字幕一区二区三区| 国产精品夜夜嗨| 欧美三级在线播放| 久久蜜臀中文字幕| 亚洲国产日韩综合久久精品| 狠狠色狠狠色综合系列| 色综合中文字幕国产 | 久久国产尿小便嘘嘘| 成人精品视频一区| 欧美日韩日日摸| 欧美激情一区二区在线| 午夜天堂影视香蕉久久| 国产成人a级片| 欧美日韩国产一级| 中文字幕一区二区视频| 奇米777欧美一区二区| av成人老司机| 欧美成人猛片aaaaaaa| 亚洲国产精品久久人人爱| 国产精品1区二区.| 51精品国自产在线| 亚洲欧洲av另类| 国产精品自产自拍| 777a∨成人精品桃花网| 亚洲男人天堂一区| 成人午夜看片网址| 欧美成人一级视频| 日韩在线播放一区二区| 91亚洲国产成人精品一区二区三 | 九九精品一区二区| 欧美日韩精品一二三区| 成人欧美一区二区三区在线播放| 久草这里只有精品视频| 欧美日韩一二三| 亚洲欧美aⅴ...| 成人免费视频一区| 国产亚洲一区二区三区| 久久丁香综合五月国产三级网站 | 久久精品亚洲国产奇米99| 秋霞午夜鲁丝一区二区老狼| 欧美日韩综合在线| 伊人夜夜躁av伊人久久| 成人av资源网站| 中文字幕精品一区二区三区精品| 美国毛片一区二区三区| 欧美一区二区久久| 首页综合国产亚洲丝袜| 欧美日韩另类一区| 亚洲国产一区视频| 在线观看日韩精品| 亚洲精品国久久99热| 99re热这里只有精品视频| 中文字幕久久午夜不卡| 成人av在线一区二区三区| 国产精品美女久久久久av爽李琼| 国产成人午夜精品5599| 国产欧美日韩三级| 成人久久18免费网站麻豆| 综合久久综合久久| 色中色一区二区| 午夜亚洲福利老司机| 欧美一区二区三区人| 蜜桃av噜噜一区| www国产精品av| 成人黄色网址在线观看| 中文字幕一区二区三区在线观看| 99精品视频在线播放观看| 亚洲桃色在线一区| 欧美在线免费播放| 午夜欧美2019年伦理| 日韩欧美一级特黄在线播放| 韩国欧美国产1区| 国产精品久久久久久久久动漫| 91视频你懂的| 午夜日韩在线观看| 久久品道一品道久久精品| 成人免费毛片片v| 一区二区在线观看免费| 91精品国产高清一区二区三区| 国内精品写真在线观看| 综合欧美亚洲日本| 欧美精品三级日韩久久| 国产馆精品极品| 悠悠色在线精品| 精品美女一区二区| av在线不卡网| 日韩av成人高清| 国产精品私房写真福利视频| 日本高清不卡aⅴ免费网站| 免费欧美在线视频|