code128B码是这么造的!

科学家 2010-10-27 10:59:07
曾经到处搜索code128B码,得到的要么不灵,要么是个控件。核心方法就是得不到。今天在此公布算法。希望了解其他兄弟的郁闷,就是这么简单,俩函数:
第一步:
bool GetStringCode(char *str, string &strCode)
{//传说中的code128B码就是这么造的,因为VC中的char其实就是一个int,所以对我们VC来讲更是简单无比
if(str==NULL)
return false;
if(int(strlen(str))==0)
return false;

vector <int> tV;

int nTol = 104;
int nsz = strlen(str);

for (int i=0;i<nsz;i++)
{
if(str[i]>=32)
nTol += (str[i] - 32) * (i+1);
else
nTol += (str[i] + 64) * (i+1);
}

int nEndCode = nTol%103;
if (nEndCode>=95)
{
if(nEndCode<=102)
nEndCode = 100 + nEndCode;
}
else
{
nEndCode += 32;
}

tV.push_back(204);//加头
for (int j=0;j<nsz;j++)
tV.push_back(int(str[j]));//加内容
tV.push_back(nEndCode);//加校验码
tV.push_back(206);//加尾

int nV = tV.size();
for (int k=0;k<nV;k++)
{
strCode += g_codemap[tV.at(k)];
}


return true;
}

第二步:
bool FillCodeMap(void)//g_codemap是个map,这我不用讲了,找个地方定义一下,在此处填充
{
if(!g_codemap.empty())
return true;

g_codemap[32]="11011001100";
g_codemap[33]="11001101100";
g_codemap[34]="11001100110";
g_codemap[35]="10010011000";
g_codemap[36]="10010001100";
g_codemap[37]="10001001100";
g_codemap[38]="10011001000";
g_codemap[39]="10011000100";
g_codemap[40]="10001100100";
g_codemap[41]="11001001000";
g_codemap[42]="11001000100";
g_codemap[43]="11000100100";
g_codemap[44]="10110011100";
g_codemap[45]="10011011100";
g_codemap[46]="10011001110";
g_codemap[47]="10111001100";
g_codemap[48]="10011101100";
g_codemap[49]="10011100110";
g_codemap[50]="11001110010";
g_codemap[51]="11001011100";
g_codemap[52]="11001001110";
g_codemap[53]="11011100100";
g_codemap[54]="11001110100";
g_codemap[55]="11101101110";
g_codemap[56]="11101001100";
g_codemap[57]="11100101100";
g_codemap[58]="11100100110";
g_codemap[59]="11101100100";
g_codemap[60]="11100110100";
g_codemap[61]="11100110010";
g_codemap[62]="11011011000";
g_codemap[63]="11011000110";
g_codemap[64]="11000110110";
g_codemap[65]="10100011000";
g_codemap[66]="10001011000";
g_codemap[67]="10001000110";
g_codemap[68]="10110001000";
g_codemap[69]="10001101000";
g_codemap[70]="10001100010";
g_codemap[71]="11010001000";
g_codemap[72]="11000101000";
g_codemap[73]="11000100010";
g_codemap[74]="10110111000";
g_codemap[75]="10110001110";
g_codemap[76]="10001101110";
g_codemap[77]="10111011000";
g_codemap[78]="10111000110";
g_codemap[79]="10001110110";
g_codemap[80]="11101110110";
g_codemap[81]="11010001110";
g_codemap[82]="11000101110";
g_codemap[83]="11011101000";
g_codemap[84]="11011100010";
g_codemap[85]="11011101110";
g_codemap[86]="11101011000";
g_codemap[87]="11101000110";
g_codemap[88]="11100010110";
g_codemap[89]="11101101000";
g_codemap[90]="11101100010";
g_codemap[91]="11100011010";
g_codemap[92]="11101111010";
g_codemap[93]="11001000010";
g_codemap[94]="11110001010";
g_codemap[95]="10100110000";
g_codemap[96]="10100001100";
g_codemap[97]="10010110000";
g_codemap[98]="10010000110";
g_codemap[99]="10000101100";
g_codemap[100]="10000100110";
g_codemap[101]="10110010000";
g_codemap[102]="10110000100";
g_codemap[103]="10011010000";
g_codemap[104]="10011000010";
g_codemap[105]="10000110100";
g_codemap[106]="10000110010";
g_codemap[107]="11000010010";
g_codemap[108]="11001010000";
g_codemap[109]="11110111010";
g_codemap[110]="11000010100";
g_codemap[111]="10001111010";
g_codemap[112]="10100111100";
g_codemap[113]="10010111100";
g_codemap[114]="10010011110";
g_codemap[115]="10111100100";
g_codemap[116]="10011110100";
g_codemap[117]="10011110010";
g_codemap[118]="11110100100";
g_codemap[119]="11110010100";
g_codemap[120]="11110010010";
g_codemap[121]="11011011110";
g_codemap[122]="11011110110";
g_codemap[123]="11110110110";
g_codemap[124]="10101111000";
g_codemap[125]="10100011110";
g_codemap[126]="10001011110";
g_codemap[195]="10111101000";
g_codemap[196]="10111100010";
g_codemap[197]="11110101000";
g_codemap[198]="11110100010";
g_codemap[199]="10111011110";
g_codemap[200]="10111101110";
g_codemap[201]="11101011110";
g_codemap[202]="11110101110";
g_codemap[203]="11010000100";
g_codemap[204]="11010010000";
g_codemap[205]="11010011100";
g_codemap[206]="1100011101011";
g_codemap[207]="11011001100";

return true;
}
第三步:请将第一步中得到的string,它的值都是0或者1,如“101001101....”,您要自己把1画成一条黑线,0画成一条白线,全部画完。得到的条码就是code128B码
...全文
940 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sou2012 2010-10-27
  • 打赏
  • 举报
回复
MARK. 谢谢楼主分享。
科学家 2010-10-27
  • 打赏
  • 举报
回复
code128B码 条形码,电子枪扫描的那个东东。
Eleven 2010-10-27
  • 打赏
  • 举报
回复
画条形码code128??

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧