Wikipediaは、XML名前空間で使用できるBase64の2つのバージョンを提供しています。
http://en.wikipedia.org/wiki/Base64#XML。私はJavaでURLSafe、UUIDを行うために以下のJAVAを書いています(theObjectReturned.toString()を呼び出してguid文字列として取得します)。
http://iharder.sourceforge.net/current/java/base64/
コードは、次のとおりです。
私は非常に高速であるために仮定され、簡単にXML安全な変種を行うように変更することができ、Java用の他のコードを見てきました。 UUIDUtil.java
というファイル
public class UUIDUtil{
public static UUID combUUID(){
private UUID srcUUID = UUID.randomUUID();;
private java.sql.Timestamp ts = new java.sql.Timestamp(Calendar.getInstance().getTime().getTime());
long upper16OfLowerUUID = this.zeroLower48BitsOfLong(srcUUID.getLeastSignificantBits());
long lower48Time = UUIDUtil.zeroUpper16BitsOfLong(ts);
long lowerLongForNewUUID = upper16OfLowerUUID | lower48Time;
return new UUID(srcUUID.getMostSignificantBits(), lowerLongForNewUUID);
}
public static base64URLSafeOfUUIDObject(UUID uuid){
byte[] bytes = ByteBuffer.allocate(16).putLong(0, uuid.getLeastSignificantBits()).putLong(8, uuid.getMostSignificantBits()).array();
return Base64.encodeBase64URLSafeString(bytes);
}
public static base64URLSafeOfUUIDString(String uuidString){
UUID uuid = UUID.fromString(uuidString);
return UUIDUtil.base64URLSafeOfUUIDObject(uuid);
}
private static long zeroLower48BitsOfLong(long longVar){
long upper16BitMask = -281474976710656L;
return longVar & upper16BitMask;
}
private static void zeroUpper16BitsOfLong(long longVar){
long lower48BitMask = 281474976710656L-1L;
return longVar & lower48BitMask;
}
}
'_'と' -' –
良い点もありますして保存し、あなたに感謝!しかし、XMLは私たちの唯一の制限ではなく、いくつかのプログラミング言語でクラス名を生成するためにも使用する必要があります(アンダースコアは別の文字ですが、64番目の使用可能なASCII文字は見つかりませんでした)。 – Alexander233
@キャリーナ - 私はあなたが文字を使い果たした場合に役立つかもしれない提案を追加しました。もしあなたができるならば、余分な64番目のキャラクターを見つけることが最善でしょう。 – borrible