package test.http01;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class IdCard extends Thread {
public void run() {
int i = 1;
while (true) {
rundo(i);
i++;
try {
Thread.sleep(2000);
} catch (Exception e) {
}
}
}
public void rundo(int i) {
System.out.println("请输入一个身份证号码:");
BufferedReader s = new BufferedReader(new InputStreamReader(System.in));
try {
String ww = s.readLine();
if (ww.length() == 15) {
System.out.println("该居民身份证是旧的身份证!");
getInfof(ww);
Convert(ww);
} else if (ww.length() == 18) {
System.out.println("该居民身份证是新的身份证!");
getInfoe(ww);
} else {
System.out.println("该居民身份证号码位数不符!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
IdCard idCard = new IdCard();
idCard.start();
}
public static void getInfof(String s) {
String M = new String(s);
int y = Integer.parseInt(M.substring(6, 8));
int m = Integer.parseInt(M.substring(8, 10));
int d = Integer.parseInt(M.substring(10, 12));
if (m < 1 || m > 12 || d < 1 || d > 31
|| ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30)
|| (m == 2 && (((y + 1900) % 4 > 0 && d > 28) || d > 29))) {
System.out.println("該居民身份證出生年月日错误!");
} else {
System.out.println("该居民出生地:" + M.substring(0, 6));
System.out.println("该居民出生时间为:" + y + "年" + m + "月" + d + "日");
}
int sex = Integer.parseInt(M.substring(14, 15));
if (sex % 2 == 0) {
System.out.println("该居民为:女性");
} else {
System.out.println("该居民为:男性");
}
}
public static void getInfoe(String s) {
String M = new String(s);
int y = Integer.parseInt(M.substring(6, 10));
int m = Integer.parseInt(M.substring(10, 12));
int d = Integer.parseInt(M.substring(12, 14));
int[] xx = { 2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7 };
char[] yy = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
int mm = 0;
int[] gg = new int[18];
if (y < 1900 || m < 1 || m > 12 || d < 1 || d > 31
|| ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30)
|| (m == 2 && ((y % 4 > 0 && d > 28) || d > 29))) {
System.out.println("該居民身份證出生年月日錯誤!");
} else {
System.out.println("该居民出生地:" + M.substring(0, 6));
System.out.println("该居民出生时间为:" + y + "年" + m + "月" + d + "日");
}
int sex = Integer.parseInt(M.substring(16, 17));
if (sex % 2 == 0) {
System.out.println("该居民为:女性");
} else {
System.out.println("该居民为:男性");
}
for (int i = 1; i < 18; i++) {
int j = 17 - i;
gg[i - 1] = Integer.parseInt(M.substring(j, j + 1));
}
for (int i = 0; i < 17; i++) {
mm += xx[i] * gg[i];
}
mm = mm % 11;
char c = M.charAt(17);
if (c == yy[mm])
System.out.println("该居民身份证是真的");
else
System.out.println("该居民身份证是假的(校验码有误)");
}
public static void Convert(String s) throws IOException {
StringBuffer sad = new StringBuffer(s);
sad.insert(6, "19");
int[] xx = { 2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7 };
char[] yy = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
int mm = 0;
int[] gg = new int[18];
for (int i = 1; i < 18; i++) {
int j = 17 - i;
gg[i - 1] = Integer.parseInt(sad.substring(j, j + 1));
}
for (int i = 0; i < 17; i++) {
mm += xx[i] * gg[i];
}
mm = mm % 11;
System.out.println("该居民身份证是新的身份证" + sad + yy[mm]);
}
}
分享到:
相关推荐
字符串转二进制码流及解码matlab代码,可用于通信原理实验的仿真,可以将传输中文
Lua 小程序十六进制字符串和二进制数据间的转换 本篇文章将介绍 Lua 小程序在十六进制字符串和二进制数据之间的转换。Lua 是一种轻量级、高效、灵活的脚本语言,广泛应用于游戏、软件开发等领域。在数据处理过程中...
在LabVIEW编程环境中,二进制字符串转换为十进制数值是常见的操作,尤其是在处理数据或进行计算时。本文将详细讲解如何利用LabVIEW实现这一转换,并探讨相关知识点。 首先,我们要理解二进制和十进制之间的基本概念...
在VB.NET编程中,处理数据时经常会遇到将字符串与二进制数据进行转换的情况。这是因为字符串是人类可读的数据表示形式,而二进制数据则更适用于存储和传输。了解如何在两者之间进行转换是至关重要的,特别是当你需要...
labview2015版本,将二进制的字符串转换成十进制数值,
matlab编码和解码字符串转ascall码再转二进制.m
十六进制是一种逢16进1的方式,用于表示二进制数,它使用0-9和A-F这16个符号。 一、字符串转十六进制串 要将字符串转换为十六进制串,我们需要对字符串中的每个字符进行编码,然后将编码结果转换成十六进制字符串...
例如,从二进制转八进制,先将二进制转换为十进制,再由十进制转换为八进制。 在实际编程中,我们可能还需要考虑到溢出、负数、大整数等问题。对于大整数,PowerBuilder 9可能需要使用长整型(Long)或者自定义的...
labview字符串转16进制转换,非常方便,直接调用即可。
本文将深入探讨如何在C语言环境中实现二进制字符串与十六进制字符串之间的转换,并结合MFC(Microsoft Foundation Classes)框架创建一个小工具来辅助这些操作。 首先,让我们理解二进制和十六进制的基本概念。二...
//十进制转二进制字符串 Console.WriteLine(Convert.ToString(d,2)); //输出: 1010 //十进制转十六进制字符串 Console.WriteLine(Convert.ToString(d,16)); //输出: a //二进制字符串转十进制数 string bin = "1010...
字符串是由字符组成的序列,而16进制(Hexadecimal)是一种逢16进1的数字系统,常用于表示二进制数据,因为它的每一位可以表示4位二进制数,比纯二进制表达更简洁。在这个"字符串转16进制"的软件中,主要涉及的是将...
labview十六进制转二进制,输入字符串控件是十六进制显示!不是正常显示那种超级简单的转换!
;从键盘输入一个16位2进制数,以回车结束输入,将这个数保存在BX中
首先,我们来看标题提到的"int转二进制字符串的方法"。在C++中,最常用的方法是通过位运算和循环来实现。一个简单的思路是利用位移操作符(`和`>>`)以及与操作符(`&`)来检查每个二进制位。以下是一个基本的示例:...
字符串是由字符组成的序列,通常用于表示文本信息,而在计算机内存中,每个字符都有对应的二进制表示。16进制(Hexadecimal)字节则是将二进制数据转换为人类更易读的16进制形式,每个字节由8位二进制数转换而来,用...
适用于在通讯时可以用到的实例,16进制转换为二进制,已经测试OK.
在计算机编程中,字符串的16进制转10进制是一个常见的字符转换操作,特别是当处理二进制数据或在编程调试过程中遇到16进制数据时。16进制数,也称为十六进制数,是一种逢16进位的数制,使用数字0-9和字母A-F(或小写...
2. **二进制转字符串** 要将二进制数据转换回字符串,可以使用`hex2bin()`函数。但是,需要注意的是,二进制数据通常是作为字节串处理的,因此,需要确保二进制数据是通过正确的方式编码的。以下是一个示例: ```...
1.二进制字符串转十进制数值.vi