`
lauphai
  • 浏览: 24060 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

字符串转二进制

阅读更多
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代码.zip

    字符串转二进制码流及解码matlab代码,可用于通信原理实验的仿真,可以将传输中文

    Lua小程序十六进制字符串和二进制数据间的转换[借鉴].pdf

    Lua 小程序十六进制字符串和二进制数据间的转换 本篇文章将介绍 Lua 小程序在十六进制字符串和二进制数据之间的转换。Lua 是一种轻量级、高效、灵活的脚本语言,广泛应用于游戏、软件开发等领域。在数据处理过程中...

    1.二进制字符串转十进制数值_labview_二进制转十进制_

    在LabVIEW编程环境中,二进制字符串转换为十进制数值是常见的操作,尤其是在处理数据或进行计算时。本文将详细讲解如何利用LabVIEW实现这一转换,并探讨相关知识点。 首先,我们要理解二进制和十进制之间的基本概念...

    VB.NET 字符串与二进制间的转换

    在VB.NET编程中,处理数据时经常会遇到将字符串与二进制数据进行转换的情况。这是因为字符串是人类可读的数据表示形式,而二进制数据则更适用于存储和传输。了解如何在两者之间进行转换是至关重要的,特别是当你需要...

    labview二进制字符串转十进制

    labview2015版本,将二进制的字符串转换成十进制数值,

    matlab字符串转ascall码再转二进制.m

    matlab编码和解码字符串转ascall码再转二进制.m

    C# 字符串转十六进制串,16进制反向转回原字符串

    十六进制是一种逢16进1的方式,用于表示二进制数,它使用0-9和A-F这16个符号。 一、字符串转十六进制串 要将字符串转换为十六进制串,我们需要对字符串中的每个字符进行编码,然后将编码结果转换成十六进制字符串...

    pb字符串转十六进制及各进制之间转换源码

    例如,从二进制转八进制,先将二进制转换为十进制,再由十进制转换为八进制。 在实际编程中,我们可能还需要考虑到溢出、负数、大整数等问题。对于大整数,PowerBuilder 9可能需要使用长整型(Long)或者自定义的...

    labview字符串转16进制

    labview字符串转16进制转换,非常方便,直接调用即可。

    C语言二进制字符串与十六进制字符串相互转化

    本文将深入探讨如何在C语言环境中实现二进制字符串与十六进制字符串之间的转换,并结合MFC(Microsoft Foundation Classes)框架创建一个小工具来辅助这些操作。 首先,让我们理解二进制和十六进制的基本概念。二...

    C# 进制转换的实现(二进制、十六进制、十进制互转)

    //十进制转二进制字符串 Console.WriteLine(Convert.ToString(d,2)); //输出: 1010 //十进制转十六进制字符串 Console.WriteLine(Convert.ToString(d,16)); //输出: a //二进制字符串转十进制数 string bin = "1010...

    字符串转16进制

    字符串是由字符组成的序列,而16进制(Hexadecimal)是一种逢16进1的数字系统,常用于表示二进制数据,因为它的每一位可以表示4位二进制数,比纯二进制表达更简洁。在这个"字符串转16进制"的软件中,主要涉及的是将...

    labview十六进制转二进制

    labview十六进制转二进制,输入字符串控件是十六进制显示!不是正常显示那种超级简单的转换!

    汇编_01字符串转二进制

    ;从键盘输入一个16位2进制数,以回车结束输入,将这个数保存在BX中

    linux下int转二进制字符串的方法_int转二进制字符串的方法_QT_linux_

    首先,我们来看标题提到的"int转二进制字符串的方法"。在C++中,最常用的方法是通过位运算和循环来实现。一个简单的思路是利用位移操作符(`和`&gt;&gt;`)以及与操作符(`&`)来检查每个二进制位。以下是一个基本的示例:...

    字符串转16进制字节

    字符串是由字符组成的序列,通常用于表示文本信息,而在计算机内存中,每个字符都有对应的二进制表示。16进制(Hexadecimal)字节则是将二进制数据转换为人类更易读的16进制形式,每个字节由8位二进制数转换而来,用...

    Labview 16进制转换为二进制

    适用于在通讯时可以用到的实例,16进制转换为二进制,已经测试OK.

    字符串16进制转10进制

    在计算机编程中,字符串的16进制转10进制是一个常见的字符转换操作,特别是当处理二进制数据或在编程调试过程中遇到16进制数据时。16进制数,也称为十六进制数,是一种逢16进位的数制,使用数字0-9和字母A-F(或小写...

    PHP 字符串与二进制互转

    2. **二进制转字符串** 要将二进制数据转换回字符串,可以使用`hex2bin()`函数。但是,需要注意的是,二进制数据通常是作为字节串处理的,因此,需要确保二进制数据是通过正确的方式编码的。以下是一个示例: ```...

    1.二进制字符串转十进制数值.vi

    1.二进制字符串转十进制数值.vi

Global site tag (gtag.js) - Google Analytics