给定一个既含有ASCII码又含有汉字的字符串,如“abcd今天天气不错”,如何生成其二维码并将获得的二维码识别成该字符串呢?要解决这个问题,首先我们需明白ASCII码和汉字的区别。ASCII码字节数为1,且其对应的二进码字符串首字符都是0,而汉字字节数为2,其对应的二进码字符串首字符可为0也可为1。所以为了区别汉字和ASCII码,我们可以在汉字第一个字节前添加一个由二进码1开头的字节。

方法一:

(一)二维码生成:

思路:获取给定字符串中的每个字符,并将其转为二进制码字符串。根据二进制码字符串的长度来判断字符是汉字还是ASCII码,并对其进行相应的补码操作。若是ASCII码,则补完码后需在其后加两个字节,以保持二维码图形的美观。若是汉字,则补完码后需在第一个字节前加一个由二进制码1开头的字节,以区分汉字和ASCII码。添加相应的字节后,将获得的二进制码字符串保存到数组中。之后对数组中的每个二进制码字符串进行字符遍历,若是‘0’,则设置画笔颜色为白色,若是‘1’,则设置画笔颜色为黑色。最后绘制图片。

1.获取给定字符串中的每个字符,并将其转为二进制码字符串。

String str="abcd今天天气不错";
for(int i=0;i<str.length();i++) {char c=str.charAt(i);//遍历字符串中的每个字符  binarystr=Integer.toBinaryString(c);//将获得的字符转为二进制码字符串
}

2.判断字符是汉字还是ASCII码,并对其进行相应的补码操作和添加字节操作。

if(binarystr.length()<=8) {//ASCII码while(binarystr.length()<8) {//不足8位的在前补0binarystr="0"+binarystr;}binarystr=binarystr+"1001010011010011";//补完码后 凑齐3个字节 保持图形的美观
}
else{//汉字while(binarystr.length()<16) {//不足16位在前补0binarystr="0"+binarystr;}binarystr="10010100"+binarystr;//在前补一个字节 该字节首个二进制码为1  用来区分是汉字还是ASCII码
}

3.对数组中的每个二进制码字符串进行字符遍历,设置画笔颜色,绘制图形。

for(int i=0;i<tobinarystr.length;i++) {String str=tobinarystr[i];//获取二进制码字符串数组中的每个二进码字符串for(int j=0;j<str.length();j++) {char c=str.charAt(j);//获取二进制码字符串中的每个字符//根据获得的字符进行判断 设置画笔颜色if(c=='0') {g.setColor(Color.WHITE);}else {g.setColor(Color.BLACK);}//绘制图片g.fillRect(100+i*10, 100+j*10, 10, 10);}
}

4.完整代码

QRcodeunion1类:将给定字符串中的每个字符转换为二进制码字符串,并创建保存二进制码字符串的数组。

public class QRcodeunion1 {String str="abcd今天天气不错";//声明一个字符串数组,用来保存将字符转为二进制码的字符串String[] binarystring=new String[str.length()];//创建方法 将字符串中每个字符(ASCII码或汉字)转为二进制码字符串 返回字符串数组public String[] tobinarystring() {String binarystr;for(int i=0;i<str.length();i++) {char c=str.charAt(i);//遍历字符串中的每个字符  binarystr=Integer.toBinaryString(c);//将获得的字符转为二进制码字符串//判断是汉字还是ASCII码if(binarystr.length()<=8) {//ASCII码while(binarystr.length()<8) {//不足8位的在前补0binarystr="0"+binarystr;}binarystr=binarystr+"1001010011010011";//凑齐3个字节 保持图形的美观}else{//汉字while(binarystr.length()<16) {//不足16位在前补0binarystr="0"+binarystr;}binarystr="10010100"+binarystr;//在前补一个字节 该字节前一位为1  用来区分是汉字还是ASCII码}System.out.println(binarystr);binarystring[i]=binarystr;}  return binarystring;}
}

QRcodeunionUI1类:创建二维码窗体界面,绘制二维码

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
public class QRcodeunionUI1 extends JFrame {private static final long serialVersionUID = 1L;String[] tobinarystr= {};//创建窗体界面public void initUI() {setTitle("二维码");setSize(800,800);setDefaultCloseOperation(EXIT_ON_CLOSE);setVisible(true);Graphics g=getGraphics();paint(g);//调用绘制方法}public void paint(Graphics g) {super.paint(g);//遍历二进制码字符串数组for(int i=0;i<tobinarystr.length;i++) {String str=tobinarystr[i];for(int j=0;j<str.length();j++) {char c=str.charAt(j);if(c=='0') {g.setColor(Color.WHITE);}else {g.setColor(Color.BLACK);}//按行绘制二进制码字符串 按列绘制二进制码字符串中的每个字符g.fillRect(100+i*10, 100+j*10, 10, 10);}}}public static void main(String[]args) {QRcodeunionUI1 qrcodeui=new QRcodeunionUI1();QRcodeunion1  qrcode=new QRcodeunion1();qrcodeui.tobinarystr=qrcode.tobinarystring();//调用QRcodeunion中的方法qrcodeui.initUI();}
}

5.效果图

(二)二维码识别

思路:将获得的二维码图片转为int类型的二维数组,保存该图片的像素点。根据图片的宽度和方向进行取值,并设置灰度值,从而对灰度值进行判断以获得二进制码字符串。然后根据获得的二进制码字符串中的首个字符来判断是汉字还是ASCII码。若是ASCII码,则只取前8位二进制码字符合成一个二进制码字符串,若是汉字,则只取后16位二进制码字符合成一个二进制码字符串。之后将获得的二进码字符串先转为整数,再转为字符,并保存到字符数组中。最后遍历输出字符数组中的字符。

1.将获得的二维码图片转为int类型的二维数组,保存该图片的像素点。

public int[][] getpixelarry(String imgpath){BufferedImage img = null;//先声明图片对象为空try {img=ImageIO.read(new File(imgpath));//根据图片路径生成图片} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//获取图片的宽和高int w=img.getWidth();int h=img.getHeight();int[][] imgarr=new int[w][h];//定义一个与图片宽高一样的用来保存图片像素点的二维数组for(int i=0;i<w;i++) {for(int j=0;j<h;j++) {imgarr[i][j]=img.getRGB(i, j);}}return imgarr;
}

2.根据图片的宽度和方向进行取值,并设置灰度值,从而对灰度值进行判断以获得二进码字符串。

//考虑到截图边界的问题  每次从格子矩形的中点取起for(int i=width/2;i<w;i+=width) {String str1="";String str2="";for(int j=width/2;j<width*24;j+=width) {//每隔一个格子取int rgb=imgarr[i][j];Color color=new Color(rgb);//设置灰度值int red=color.getRed();int blue=color.getBlue();int green=color.getGreen();int gray=(red+blue+green)/3;//根据灰度值进行判断 获取字符串if(gray<150) {str1+="1";//黑色取1}else {str1+="0";}}}

3.根据所获二进制码字符串中的首个字符来判断是汉字还是ASCII码,从而进行相应的取值操作,获得新的二进码字符串。

if(str1.charAt(0)=='0') {//ASCII码for(int k=0;k<8;k++) {//只取前8位为一个ASCII码字符的字节str2+=""+str1.charAt(k);//二进制码字符转为二进制码字符串}
}else {//汉字for(int t=8;t<24;t++) {//后16位为汉字的两个字节str2+=""+str1.charAt(t); }
}

4.将新的二进码字符串先转为整数,再转为字符,并保存到字符数组中。最后遍历输出该数组中的字符。

int in=Integer.parseInt(str2, 2);//将获取的二进制码字符串转换为整数
char c=(char)in;//整数转为字符
ch[m]=c;//将获取的字符保存在字符数组中
m++;
for(int k=0;k<ch.length;k++) {System.out.print(ch[k]);//打印输出字符数组
}

5.完整代码

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
//中英混合二维码识别
public class QRcodecla {//构建一个方法  返回将二维码图片转为int类型的二维数组public int[][] getpixelarry(String imgpath){BufferedImage img = null;//先声明图片对象为空try {img=ImageIO.read(new File(imgpath));//根据图片路径生成图片} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//获取图片的宽和高int w=img.getWidth();int h=img.getHeight();int[][] imgarr=new int[w][h];//定义一个与图片宽高一样的用来保存图片像素点的二维数组for(int i=0;i<w;i++) {for(int j=0;j<h;j++) {imgarr[i][j]=img.getRGB(i, j);}}return imgarr;}//创建方法 根据获得的二进制码 生成字符public void tostring() {//获取存有二维码图片像素点数组int[][] imgarr=getpixelarry("C:\\Users\\011\\Pictures\\Saved Pictures\\中英混合QRcode.png");int w=imgarr.length;int width=w/10;//格子宽度char[] ch=new char[10];int m=0;//待输出字符数组的下标//考虑到截图边界的问题  每次从格子矩形的中点取起for(int i=width/2;i<w;i+=width) {String str1="";String str2="";for(int j=width/2;j<width*24;j+=width) {//每隔一个格子取int rgb=imgarr[i][j];Color color=new Color(rgb);//设置灰度值int red=color.getRed();int blue=color.getBlue();int green=color.getGreen();int gray=(red+blue+green)/3;//根据灰度值进行判断if(gray<150) {str1+="1";//黑色取1}else {str1+="0";}}//根据获得二进制码字符串中的首个字符判断是汉字还ASCII码if(str1.charAt(0)=='0') {//ASCII码for(int k=0;k<8;k++) {//只取前8位为一个ASCII码字符的字节str2+=""+str1.charAt(k);//二进制码字符转为二进制码字符串}}else {//汉字for(int t=8;t<24;t++) {//后16位为汉字的两个字节str2+=""+str1.charAt(t);  }}int in=Integer.parseInt(str2, 2);//将获取的二进制码字符串转换为整数char c=(char)in;//整数转为字符System.out.println(str2+"---"+c);ch[m]=c;//将获取的字符保存到字符数组中m++;}for(int k=0;k<ch.length;k++) {System.out.print(ch[k]);//打印输出字符数组}}public static void main(String[]args) {QRcodecla qrcode=new QRcodecla();qrcode.tostring();}}

6.效果图

方法二:

(一)二维码生成

思路:获取给定字符串中的每个字符,并将其转为二进制码字符串。根据二进制码字符串的长度来判断字符是汉字还是ASCII码,并对其进行相应的补码操作。若是汉字,补完码后还需在第一个字节前添加一个由二进制码1开头的字节,以区分ASCII码和汉字。并将所有获得的二进制码字符串合成一个新的二进制码字符串。由于新获得的二进制码字符串共有176位二进制码,所以在对新获得的二进码字符串进行字符遍历时,需借助一个计数器,每隔16个字符将计数器设置为0。这样就可以巧妙地设置坐标,使绘制出的图形美观。

1.获取给定字符串中的每个字符,并将其转为二进制码字符串。

String str="abcd今天天气不错";
String binarystr;
for(int i=0;i<str.length();i++) {char c=str.charAt(i);//遍历字符串中的每个字符  binarystr=Integer.toBinaryString(c);//将获得的字符转为二进制码字符串

2.判断字符是汉字还是ASCII码,并对其进行相应的补码和添加字节操作。之后将所有获得的二进制码字符串合成一个新的二进制码字符串。

//声明一个字符串,用来保存将字符转为二进制码的字符串
String binarystring="";
if(binarystr.length()<=8) {//ASCII码while(binarystr.length()<8) {//不足8位的在前补0binarystr="0"+binarystr;}
}
else{//汉字while(binarystr.length()<16) {//不足16位在前补0binarystr="0"+binarystr;}binarystr="10010100"+binarystr;//在前补一个字节 该字节第一位为1  用来区分是汉字还是ASCII码
}
binarystring+=binarystr;

3.对新获得的二进码字符串进行字符遍历,设置画笔颜色,并巧妙地设置坐标。

for(int i=0;i<tobinarystr.length();i++) {//每列绘制指定二进制码字符串中的一个字符  设置一个计数器count  //将所获得的新二进制码字符串每取16个字符 即每隔16个字符将计数器设置为0  if(count==16) {count=0;}char c=tobinarystr.charAt(i);if(c=='0') {g.setColor(Color.WHITE);}else {g.setColor(Color.BLACK);}//按行绘制二进制码字符串 按列绘制二进制码字符串中的每个字符 这样每行有11个格子 每列有16个格子g.fillRect(100+i/16*10, 100+count*10, 10, 10);//格子的宽度和高度都为10count++;
}

4.完整代码

QRcodeunion2类:将给定字符串中的每个字符转换为二进制码字符串,并将这些二进制码字符串合成一个新的二进制码字符串。

public class QRcodeunion2 {String str="abcd今天天气不错";//声明一个字符串,用来保存将字符转为二进制码的字符串String binarystring="";//创建方法 将字符串中每个字符(ASCII码或汉字)转为二进制码字符串 返回字符串数组public String tobinarystring() {String binarystr;for(int i=0;i<str.length();i++) {char c=str.charAt(i);//遍历字符串中的每个字符  binarystr=Integer.toBinaryString(c);//将获得的字符转为二进制码字符串//判断是汉字还是ASCII码if(binarystr.length()<=8) {//ASCII码while(binarystr.length()<8) {//不足8位的在前补0binarystr="0"+binarystr;}}else{//汉字while(binarystr.length()<16) {//不足16位在前补0binarystr="0"+binarystr;}binarystr="10010100"+binarystr;//在前补一个字节 该字节第一位为1  用来区分是汉字还是ASCII码}System.out.println(binarystr);binarystring+=binarystr;  }   return binarystring;}
}

QRcodeunionUI2类:创建窗体界面,绘制二维码

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
public class QRcodeunionUI2 extends JFrame {private static final long serialVersionUID = 1L;QRcodeunion2  qrcode2=new QRcodeunion2();//调用QRcodeunion2中的方法String tobinarystr=qrcode2.tobinarystring();//创建窗体界面public void initUI() {setTitle("二维码");setSize(800,800);setDefaultCloseOperation(EXIT_ON_CLOSE);setVisible(true);Graphics g=getGraphics();paint(g);//调用绘制方法}public void paint(Graphics g) {super.paint(g);//遍历字符串int count=0;for(int i=0;i<tobinarystr.length();i++) {//每列绘制指定字符串中的一个字符  设置一个计数器count  //将所获得的二进制码字符串每取16个字符 即每隔16个字符将计数器设置为0  if(count==16) {count=0;}char c=tobinarystr.charAt(i);if(c=='0') {g.setColor(Color.WHITE);}else {g.setColor(Color.BLACK);}//按行绘制二进制码字符串 按列绘制二进制码字符串中的每个字符 这样每行有11个格子 每列有16个格子g.fillRect(100+i/16*10, 100+count*10, 10, 10);//格子的宽度和高度都为10count++;}}public static void main(String[]args) {QRcodeunionUI2 qrcodeui=new QRcodeunionUI2();qrcodeui.initUI();}
}

5.效果图

(二)二维码识别

思路:将获得的二维码图片转为int类型的二维数组,保存该图片的像素点。根据图片的宽度和方向进行取值,并设置灰度值,从而对灰度值进行判断以获得二进制码字符串。从获得的二进制码字符串中截取需转为ASCII码字符或中文字符的二进制码字符串子串,将其保存到字符串数组中。遍历数组中二进制码字符串,将其转为对应的字符,并输出该字符。

1.将获得的二维码图片转为int类型的二维数组,保存该图片的像素点。

public int[][] getpixelarry(String imgpath){BufferedImage img = null;//先声明图片对象为空try {img=ImageIO.read(new File(imgpath));//根据图片路径生成图片} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//获取图片的宽和高int w=img.getWidth();int h=img.getHeight();   int[][] imgarr=new int[w][h];//定义一个与图片宽高一样的用来保存图片像素点的二维数组      for(int i=0;i<w;i++) {for(int j=0;j<h;j++) {imgarr[i][j]=img.getRGB(i, j);}}return imgarr;
}

2.根据图片的宽度和方向进行取值,并设置灰度值,从而对灰度值进行判断以获得二进制码字符串。

for(int i=width/2;i<w;i+=width) {//每隔一个格子进行取值for(int j=width/2;j<16*width;j+=width) {//每列有16个格子int rgb=imgarr[i][j];Color color=new Color(rgb);//取灰度值进行判断int red=color.getRed();int green=color.getGreen();int blue=color.getBlue();int gray=(red+green+blue)/3;if(gray<150) {str1+="1";}else {str1+="0";}}
}

3.截取需转为ASCII码字符或中文字符的二进制码字符串子串,将其保存到字符串数组中。

int k=0;
while(k<4) {//从二维码图可知,前四个字符为ASCII码str2[k]="";//数组中的每个字符串需初始化for(int m=k*8;m<8*(1+k);m++) {//每隔8个二进制码取值str2[k]+=str1.charAt(m);}k++;
}
while(4<=k&&k<10) {//后六个字符为中文str2[k]="";for(int n=40+24*(k-4);n<32+24*(k-3);n++) {//每隔16个二进制码取值 str2[k]+=str1.charAt(n);}k++;
}

4.遍历数组中二进制码字符串,将其转为对应的字符,并输出该字符。

for(int t=0;t<str2.length;t++) {int in=Integer.parseInt(str2[t], 2);char c=(char)in;System.out.print(c);
}

5.完整代码

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class QRcodecla2 {//构建一个方法  返回将二维码图片转为int类型的二维数组public int[][] getpixelarry(String imgpath){BufferedImage img = null;//先声明图片对象为空try {img=ImageIO.read(new File(imgpath));//根据图片路径生成图片} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//获取图片的宽和高int w=img.getWidth();int h=img.getHeight();int[][] imgarr=new int[w][h];//定义一个与图片宽高一样的用来保存图片像素点的二维数组for(int i=0;i<w;i++) {for(int j=0;j<h;j++) {imgarr[i][j]=img.getRGB(i, j);}}return imgarr;}public void tostring() {int[][] imgarr=getpixelarry("C:\\Users\\011\\Pictures\\Saved Pictures\\中英混合2.png");int w=imgarr.length;int width=w/11;//格子宽度(一行由11个黑白格子组成)String str1="";//定义保存由灰度值判断的二进制码String[] str2=new String[10];//定义保存待转换字符的二进制码字符串//考虑到截图边界的问题  每次从格子矩形的中点取起for(int i=width/2;i<w;i+=width) {for(int j=width/2;j<16*width;j+=width) {int rgb=imgarr[i][j];Color color=new Color(rgb);//取灰度值进行判断int red=color.getRed();int green=color.getGreen();int blue=color.getBlue();int gray=(red+green+blue)/3;if(gray<150) {str1+="1";}else {str1+="0";}}}//从str1中截取需转为ASCII码字符(8bit)或中文字符(16bit)的二进制码字符串//保存到数组中int k=0;while(k<4) {//从中英混合二维码图可知,前四个字符为ASCII码str2[k]="";//数组中的每个字符串需初始化for(int m=k*8;m<8*(1+k);m++) {//每隔8个二进制码取值str2[k]+=str1.charAt(m);}k++;}while(4<=k&&k<10) {//后六个字符为中文str2[k]="";for(int n=40+24*(k-4);n<32+24*(k-3);n++) {//每隔16个二进制码取值str2[k]+=str1.charAt(n);}k++;}//打印输出二进制码字符串及其所代表的字符for(int t=0;t<str2.length;t++) {int in=Integer.parseInt(str2[t], 2);char c=(char)in;System.out.println(str2[t]+"---"+c);}//打印输出识别后的二维码字符串for(int t=0;t<str2.length;t++) {int in=Integer.parseInt(str2[t], 2);char c=(char)in;System.out.print(c);}}//程序入口public static void main(String[]args) {QRcodecla2 qrcodecla2=new QRcodecla2();qrcodecla2.tostring();}
}

6.效果图

Java-二维码生成与识别(二)相关推荐

  1. python识别发票二维码_Python 实现二维码生成和识别

    今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...

  2. 二维码生成与识别 API 结合之活动签到系统的设计与实现

    引言 活动签到是各类会议.展览和社交活动中必不可少的环节.传统的签到方式常常繁琐且容易出错,因此,采用二维码技术进行签到已成为一种常见的解决方案. 本文将介绍一种利用二维码生成 API 和二维码识别 ...

  3. 【二维码识别】基于matlab GUI灰度+二值化+校正二维码生成与识别【含Matlab源码 635期】

    ⛄一.二维码生成与识别简介 如今,移动互联网技术日新月异,随着5G时代的来临,广泛应用于数据处理过程中的二维码信息安全日益成为人们越来越关注的问题.以QR码为代表的二维码,以其在信息存储.传输和识别技 ...

  4. 【二维码识别】灰度+二值化+校正二维码生成与识别【含GUI Matlab源码 635期】

    ⛄一.二维码生成与识别简介 如今,移动互联网技术日新月异,随着5G时代的来临,广泛应用于数据处理过程中的二维码信息安全日益成为人们越来越关注的问题.以QR码为代表的二维码,以其在信息存储.传输和识别技 ...

  5. python 二维码生成与识别

    python 二维码生成与识别 1.生成二维码 1.1 qrcode 安装qrcode模块 pip install qrcode 示例: # author:mlnt# createdate:2022/ ...

  6. 二维码生成及识别接口

    在线二维码生成,在线二维码识别 一.接口介绍 为用户提供在线二维码生成器及其识别功能,其中二维码识别支持Base64.上传图片及复制图片地址识别等方式.广泛应用于宣传海报.简历.餐桌牌同步点餐.二维码 ...

  7. Qt开发二维码工具QR二维码生成和识别支持批量生成免费使用

    简介 Qt编写,使用第三方库libqrencode和QZxing,支持QR二维码生成和识别,二维码可批量生成,支持中文,还可以设置二维码大小颜色.免费使用,下载链接在本文底部,拿走不用谢,假如您慷慨大 ...

  8. jquery二维码生成插件_二维码生成器

    jquery二维码生成插件_二维码生成器 下载地址:jquery生成二维码.rar 转载于:https://www.cnblogs.com/wifi/articles/3176529.html

  9. Java—二维码生成与识别(一)

    一.二维码生成 思路:将字符串中的每个字符转为二进制码字符串,保存在二进制码字符串数组中.对二进制码字符串数组中的每个二进制码字符串进行字符遍历,若是'0',则设置画笔颜色为白色,若是'1',则设置画 ...

  10. Android 二维码 生成和识别

    今天讲一下目前移动领域很常用的技术--二维码.现在大街小巷.各大网站都有二维码的踪迹,不管是IOS.Android.WP都有相关支持的软件.之前我就想了解二维码是如何工作,最近因为工作需要使用相关技术 ...

最新文章

  1. markdown编辑器语法——背景色
  2. #include quot;*.cquot;文件的妙用
  3. 【深度学习】CV和NLP通吃!谷歌提出OmniNet:Transformers的全方位表示
  4. Error occurred while trying to proxy request
  5. docker小实战和应用
  6. C#提供的类库能够轻松实现对文件的操作
  7. 【HDU - 5914 】Triangle (打表 或 set维护)
  8. (Python)零起步数学+神经网络入门
  9. scrapy.spider
  10. 专家:金融科技发展需行业自律和监管合力推动
  11. OSChina 周五乱弹 —— 如何向妹子解释越位
  12. IIS SSL证书 指定的登录会话不存在,可能已被终止 HRESULT:0x80070520
  13. 9.运输层(3)---TCP
  14. Jira 破解版 Docker 部署
  15. 多目标遗传优化算法nsga2[python源码实现]
  16. c语言cad改变字体大小,cad怎么改变默认文字字体
  17. 实战案例丨腾讯安全托管服务MSS助力数字广东重保期间“0事故”
  18. java打字小游戏_JAVA打字小游戏
  19. 【SEO网络推广】会被百度K站的原因
  20. 超全Altium Designer16 总结--Altium Designer

热门文章

  1. mahout 推荐算法 java_Mahout之推荐算法基本实例
  2. 将本地图片转为url网络图片
  3. 单片机0804AD转换c语言程序,模数转换芯片ADC0804的应用
  4. 差分运放公式推导-运算放大器
  5. 向日葵远程连接时控制失灵
  6. 5.3.4 消费组稳定后,原有消费者重新加入消费组
  7. 三菱a系列motion软体_三菱M70第四轴参数设定一览表
  8. 【中国剩余定理】终于弄懂剩余定理了
  9. 考虑说话人信息的对话摘要
  10. 泰罗凹凸曼主题曲谐音