首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java 数目字转化成字节存储算法

2012-10-25 
java 数字转化成字节存储算法package comimport java.io.Fileimport java.io.FileOutputStreamimport j

java 数字转化成字节存储算法

package com;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;public class TestByte {/** * ip转化成4个字节进行存储,然后再把四个字节转换成byte */public static void ipTobyte(){   String ip="222.168.205.83";   String[] ips = ip.split("\\.");   int ip1 = Integer.valueOf(ips[0]);   int ip2 = Integer.valueOf(ips[1]);   int ip3 = Integer.valueOf(ips[2]);   int ip4 = Integer.valueOf(ips[3]);   System.out.println(ip1);   System.out.println(ip2);   System.out.println(ip3);   System.out.println(ip4);   byte b1 = (byte)ip1;   byte b2 = (byte)ip2;   byte b3 = (byte)ip3;   byte b4 = (byte)ip4;      System.out.println(b1);   System.out.println(b2);   System.out.println(b3);   System.out.println(b4);   // int 转byte之后 操作127的数字将全部变成负数形式,如果想转成原来的 int值  直接 & 0xFF   System.out.println(b1 & 0xFF);   System.out.println(b2 & 0xFF);   System.out.println(b3 & 0xFF);   System.out.println(b4 & 0xFF);   }public static void byteToIP(){}/** * long -> 4位字节 -> long  * 主要是做了一个数据压缩算法 * 比如说一个ip可以直接存储成4个字节 */public static void numToBinaryString(){//源数字long num = 98786657;//转化成二进制串String binary = Long.toBinaryString(num);System.out.println(binary);    int length = 32-binary.length();    //补充到32位for(int i=0;i<length;i++){binary = '0'+binary;}System.out.println(binary);System.out.println(binary.length());//分割成四个字节 (一个字节8位)String b1 = binary.substring(0, 8);String b2 = binary.substring(8, 16);String b3 = binary.substring(16, 24);String b4 = binary.substring(24, 32);System.out.println(b1);System.out.println(b2);System.out.println(b3);System.out.println(b4);//8位转化成一个字节int a1 = Integer.valueOf(b1, 2);int a2 = Integer.valueOf(b2, 2);int a3 = Integer.valueOf(b3, 2);int a4 = Integer.valueOf(b4, 2);System.out.println(a1);System.out.println(a2);System.out.println(a3);System.out.println(a4);byte c1 = (byte)a1;byte c2 = (byte)a2;byte c3 = (byte)a3;byte c4 = (byte)a4;System.out.println(c1);System.out.println(c2);System.out.println(c3);System.out.println(c4);//把字节转化成long long ret = 0;ret |= c4 & 0xFF;ret |= (c3<<8) & 0xFF00;ret |= (c2<<16) & 0xFF0000;ret |= (c1<<24) & 0xFF000000;System.out.println(ret);// Integer.toBinaryString(c4&0xFF);//System.out.println();}/** * 把字节写入文件,看看是啥效果 * @throws IOException */public static void writeByteToFile() throws IOException{File file = new File("a.txt");FileOutputStream fis = new FileOutputStream(file);fis.write(-106);fis.write(-38);fis.write(0);fis.write(11);fis.flush();System.out.println(file.getAbsolutePath());}public static void main(String[] args) throws IOException{//TestByte.writeByteToFile();//TestByte.numToBinaryString();TestByte.ipTobyte();}}
/** * 从ip的字符串形式得到字节数组形式 * * @param ip * 字符串形式的ip * @return 字节数组形式的ip */public static byte[] getIpByteArrayFromString(String ip) {byte[] ret = new byte[4];java.util.StringTokenizer st = new java.util.StringTokenizer(ip, ".");try {ret[0] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);ret[1] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);ret[2] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);ret[3] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);} catch (Exception e) {System.out.println(e.getMessage());}return ret;}

热点排行