📄 guid.java
字号:
package jp.ne.so_net.ga2.no_ji.jcom;
import java.text.NumberFormat;
/**
* GUID僋儔僗
* @author Yoshinori Watanabe(搉曈 媊懃)
* @see IUnknown
* @see IDispatch
@author Yoshinori Watanabe(搉曈 媊懃)
@version 2.10, 2000/07/01
Copyright(C) Yoshinori Watanabe 1999-2000. All Rights Reserved.
*/
public class GUID {
/*
GUID僨乕僞丅
僨乕僞塀暳偟傑偣傫丅岲偒偵尒偰偔偩偝偄丅
偄偠傞偲偒偵偼拲堄偟偰丅
*/
public int data1;
public short data2;
public short data3;
public byte[] data4 = new byte[8];
/**
GUID傪嶌惉偟傑偡丅
*/
public GUID(int data1, short data2, short data3,
byte data40, byte data41, byte data42, byte data43,
byte data44, byte data45, byte data46, byte data47) {
this.data1 = data1;
this.data2 = data2;
this.data3 = data3;
this.data4[0] = data40;
this.data4[1] = data41;
this.data4[2] = data42;
this.data4[3] = data43;
this.data4[4] = data44;
this.data4[5] = data45;
this.data4[6] = data46;
this.data4[7] = data47;
}
/**
GUID傪嶌惉偟傑偡丅
*/
public GUID(int data1, short data2, short data3, byte[] data4) {
this(data1, data2, data3, data4[0], data4[1], data4[2], data4[3], data4[4], data4[5], data4[6], data4[7]);
}
/**
GUID傪嶌惉偟傑偡丅
Java偱悢抣傪捈愙婰弎偡傞偲丄捠忢int宆偵側傝傑偡丅short 傗byte偵偡傞偲偒偵偼
柧帵揑側僉儍僗僩偑昁梫偵側傝丄婰弎偑柺搢偵側傝傑偡丅
偦偺晧壸傪尭傜偡偨傔偵偙偺僐儞僗僩儔僋僞傪梡堄偟傑偟偨丅
data2,data3偼short偺斖埻偺抣傪丄data40乣data47偼byte偺斖埻偺抣傪巜掕偟偰壓偝偄丅
*/
public GUID(int data1, int data2, int data3,
int data40, int data41, int data42, int data43,
int data44, int data45, int data46, int data47) {
this(data1, (short)data2, (short)data3,
(byte)data40, (byte)data41, (byte)data42, (byte)data43,
(byte)data44, (byte)data45, (byte)data46, (byte)data47);
}
/**
GUID傪嶌惉偟傑偡丅
Java偱悢抣傪捈愙婰弎偡傞偲丄捠忢int宆偵側傝傑偡丅short 傗byte偵偡傞偲偒偵偼
柧帵揑側僉儍僗僩偑昁梫偵側傝丄婰弎偑柺搢偵側傝傑偡丅
偦偺晧壸傪尭傜偡偨傔偵偙偺僐儞僗僩儔僋僞傪梡堄偟傑偟偨丅
data2,data3偼short偺斖埻偺抣傪丄data4[0]乣data4[7]偼byte偺斖埻偺抣傪巜掕偟偰壓偝偄丅
*/
public GUID(int data1, int data2, int data3, int[] data4) {
this(data1, data2, data3, data4[0], data4[1], data4[2], data4[3], data4[4], data4[5], data4[6], data4[7]);
}
/**
GUID傪"{FB7FDAE2-89B8-11CF-9BE8-00A0C90A632C}"偺宍幃偱昞偟傑偡丅
*/
public String toString() {
return "{"+
GUID.toHexString(data1)+"-"+
GUID.toHexString(data2)+"-"+
GUID.toHexString(data3)+"-"+
GUID.toHexString(data4[0])+GUID.toHexString(data4[1])+"-"+
GUID.toHexString(data4[2])+GUID.toHexString(data4[3])+
GUID.toHexString(data4[4])+GUID.toHexString(data4[5])+
GUID.toHexString(data4[6])+GUID.toHexString(data4[7])+"}";
}
public boolean equals(Object obj) {
if(!(obj instanceof GUID)) return false;
GUID guid = (GUID)obj;
if(guid.data1 != data1) return false;
if(guid.data2 != data2) return false;
if(guid.data3 != data3) return false;
for(int i=0; i<8; i++) {
if(guid.data4[i] != data4[i]) return false;
}
return true;
}
// 偁偀乣丄偔偦乣丄柺搢偔偝偄両 俠側傜堦敪側偺偵丒丒丒丅
public static String toHexString(int i) {
String s = Integer.toHexString(i).toUpperCase();
return ("0000000"+s).substring(s.length()-1);
}
public static String toHexString(short i) {
String s = Integer.toHexString(i).toUpperCase();
return ("000"+s).substring(s.length()-1);
}
public static String toHexString(byte i) {
String s = Integer.toHexString(i).toUpperCase();
return ("0"+s).substring(s.length()-1);
}
/**
"{FB7FDAE2-89B8-11CF-9BE8-00A0C90A632C}"偺宍幃偐傜GUID傪嶌惉偟傑偡丅
宍幃偑娫堘偭偰偄偨応崌偼null傪曉偟傑偡丅
*/
public static GUID parse(String guid) {
try {
/*
0....:....1....:....2....:....3....:....
"{FB7FDAE2-89B8-11CF-9BE8-00A0C90A632C}"
Byte.parseByte("C0",16); 偱偼丄NumberFormatException偵側傞丅
127埲忋偼庴偗晅偗偰偔傟側偄偺偩丅
偦偺偔偣丄埲壓偺僉儍僗僩偼壜擻偱丄-64偵側傞丅
byte b = (byte)192; // -64
*/
return new GUID(
(int)Long.parseLong(guid.substring(1,9),16),
Integer.parseInt(guid.substring(10,14),16),
Integer.parseInt(guid.substring(15,19),16),
Integer.parseInt(guid.substring(20,22),16),
Integer.parseInt(guid.substring(22,24),16),
Integer.parseInt(guid.substring(25,27),16),
Integer.parseInt(guid.substring(27,29),16),
Integer.parseInt(guid.substring(29,31),16),
Integer.parseInt(guid.substring(31,33),16),
Integer.parseInt(guid.substring(33,35),16),
Integer.parseInt(guid.substring(35,37),16));
}catch(Exception e) { return null; }
}
/*
昗弨揑側GUID傪梡堄偟偰偍偒傑偡丅
揔摉偵捛壛偟偰壓偝偄丅
愝寁忋丄偙偙偵捛壛偡傞偺偱偼側偔丄屄乆偺僀儞僞乕僼僃乕僗偵懳墳偟偨僋儔僗偺儊儞僶偵
梡堄偡傋偒偱偡丅
*/
// IID
public static final GUID IID_IUnknown = new GUID( 0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 );
public static final GUID IID_IDispatch = new GUID( 0x00020400, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 );
public static final GUID IID_IEnumVARIANT = new GUID( 0x00020404, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 );
public static void main(String[] args) {
System.out.println("IID_IUnknown="+GUID.IID_IUnknown.toString());
System.out.println("IID_IDispatch="+GUID.IID_IDispatch.toString());
System.out.println("IID_IEnumVARIANT="+GUID.IID_IEnumVARIANT.toString());
// 摨偠抣偑昞帵偝傟傟偽俷俲
GUID tmp1 = GUID.parse(GUID.IID_IUnknown.toString());
System.out.println(tmp1);
GUID tmp2 = GUID.parse(GUID.IID_IDispatch.toString());
System.out.println(tmp2);
GUID tmp3 = GUID.parse(GUID.IID_IEnumVARIANT.toString());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -