- 浏览: 19972 次
- 性别:
- 来自: 西安
最近访客 更多访客>>
最新评论
-
tonylily1211:
好东西,收藏啦!
开源项目源码下载(SVN)地址 -
rmn190:
谢谢分享,现在很需要这样的精神食粮呀!!
The Tao Of Programming —— 编程之道 -
rmn190:
顶!一直关注!
Tomcat的配置技巧精华详解
UUID是把128个二进制数,转换成32个16进制数的,每4个二进制数转换成一个16进制数。
如果是64(2的6次方)进制的话,应该是6个二进制数转换一个64进制数。
我们可以在UUID前面补加一个16进行数,让它成为33位的16进制数,共是132位二进制数。
这样就可以用22个64进制数表示132(22*6)位的二进制数。
结论是,可以把36位的UUID,去掉“-”变成32位的16进制数。
在这个数前面补一个16进制数,比如“0”,就变成了33位(132个二进制数,33*4)。
再把这个33位的16进制数,转换成22位的64进制数。
最终是把36位的UUID,变成一个22位的数表示,短了14位。
public class UUIDDemo { public static void main(String[] args) { String uuid = "1838efee-893d-3778-b480-43d6457767ea"; System.out.println("原始uuid:" + uuid); uuid = uuid.replaceAll("-", "").toUpperCase(); System.out.println("去掉'-'变大写:" + uuid); uuid = "0" + uuid; System.out.println("前补16进制'0':" + uuid); uuid = hexToBinary(uuid); System.out.println("转换为132位2进制数:" + uuid); uuid = binaryTo64(uuid); System.out.println("转换为64进制数:" + uuid); } public static String hexToBinary(String hex) { StringBuffer sb = new StringBuffer(); if (hex == null || "".equals(hex)) return ""; for (int i = 0; i < hex.length(); i++) { sb.append(hexToBinary(hex.charAt(i))); } return sb.toString(); } public static String hexToBinary(char hex) { String binary = null; switch (hex) { case '0': binary = "0000"; break; case '1': binary = "0001"; break; case '2': binary = "0010"; break; case '3': binary = "0011"; break; case '4': binary = "0100"; break; case '5': binary = "0101"; break; case '6': binary = "0110"; break; case '7': binary = "0111"; break; case '8': binary = "1000"; break; case '9': binary = "1001"; break; case 'A': binary = "1010"; break; case 'B': binary = "1011"; break; case 'C': binary = "1100"; break; case 'D': binary = "1101"; break; case 'E': binary = "1110"; break; case 'F': binary = "1111"; break; default: binary = ""; } return binary; } public static String binaryTo64(String binary) { StringBuffer sb = new StringBuffer(); if (binary == null || "".equals(binary)) return ""; if ((binary.length() % 6) != 0) return ""; for (int i = 0; i < binary.length(); i += 6) { sb.append(binaryTo64a(binary.substring(i, i + 6))); } return sb.toString(); } public static String binaryTo64a(String binary) { String result = null; if ("000000".equals(binary)) { result = "0"; } else if ("000001".equals(binary)) { result = "1"; } else if ("000010".equals(binary)) { result = "2"; } else if ("000011".equals(binary)) { result = "3"; } else if ("000100".equals(binary)) { result = "4"; } else if ("000101".equals(binary)) { result = "5"; } else if ("000110".equals(binary)) { result = "6"; } else if ("000111".equals(binary)) { result = "7"; } else if ("001000".equals(binary)) { result = "8"; } else if ("001001".equals(binary)) { result = "9"; } else if ("001010".equals(binary)) { result = "a"; } else if ("001011".equals(binary)) { result = "b"; } else if ("001100".equals(binary)) { result = "c"; } else if ("001101".equals(binary)) { result = "d"; } else if ("001110".equals(binary)) { result = "e"; } else if ("001111".equals(binary)) { result = "f"; } else if ("010000".equals(binary)) { result = "g"; } else if ("010001".equals(binary)) { result = "h"; } else if ("010010".equals(binary)) { result = "i"; } else if ("010011".equals(binary)) { result = "j"; } else if ("010100".equals(binary)) { result = "k"; } else if ("010101".equals(binary)) { result = "l"; } else if ("010110".equals(binary)) { result = "m"; } else if ("010111".equals(binary)) { result = "n"; } else if ("011000".equals(binary)) { result = "o"; } else if ("011001".equals(binary)) { result = "p"; } else if ("011010".equals(binary)) { result = "q"; } else if ("011011".equals(binary)) { result = "r"; } else if ("011100".equals(binary)) { result = "s"; } else if ("011101".equals(binary)) { result = "t"; } else if ("011110".equals(binary)) { result = "u"; } else if ("011111".equals(binary)) { result = "v"; } else if ("100000".equals(binary)) { result = "w"; } else if ("100001".equals(binary)) { result = "x"; } else if ("100010".equals(binary)) { result = "y"; } else if ("100011".equals(binary)) { result = "z"; } else if ("100100".equals(binary)) { result = "A"; } else if ("100101".equals(binary)) { result = "B"; } else if ("100110".equals(binary)) { result = "C"; } else if ("100111".equals(binary)) { result = "D"; } else if ("101000".equals(binary)) { result = "E"; } else if ("101001".equals(binary)) { result = "F"; } else if ("101010".equals(binary)) { result = "G"; } else if ("101011".equals(binary)) { result = "H"; } else if ("101100".equals(binary)) { result = "I"; } else if ("101101".equals(binary)) { result = "J"; } else if ("101110".equals(binary)) { result = "K"; } else if ("101111".equals(binary)) { result = "L"; } else if ("110000".equals(binary)) { result = "M"; } else if ("110001".equals(binary)) { result = "N"; } else if ("110010".equals(binary)) { result = "O"; } else if ("110011".equals(binary)) { result = "P"; } else if ("110100".equals(binary)) { result = "Q"; } else if ("110101".equals(binary)) { result = "R"; } else if ("110110".equals(binary)) { result = "S"; } else if ("110111".equals(binary)) { result = "T"; } else if ("111000".equals(binary)) { result = "U"; } else if ("111001".equals(binary)) { result = "V"; } else if ("111010".equals(binary)) { result = "W"; } else if ("111011".equals(binary)) { result = "X"; } else if ("111100".equals(binary)) { result = "Y"; } else if ("111101".equals(binary)) { result = "Z"; } else if ("111110".equals(binary)) { result = "_"; } else if ("111111".equals(binary)) { result = "-"; } else { result = ""; } return result; } }
输出结果:
- 原始uuid:1838efee-893d-3778-b480-43d6457767ea
- 去掉'-'变大写:1838EFEE893D3778B48043D6457767EA
- 前补16进制'0':01838EFEE893D3778B48043D6457767EA
- 转换为132位2进制数:
- 000000011000001110001110111111101110100010010011110100110111011110001011010010000000010000111101011001000101011101110110011111101010
- 转换为64进制数:0oee-KyjQTubi0gZp5tSvG
摘自:http://zhaiyz.iteye.com/blog/1018906
发表评论
-
几种简单查询Oracle中表的约束信息
2010-09-18 21:26 14911、查找表的所有索引(包括索引名,类型,构成列):select ... -
Java虚拟机命令参数诠释
2010-09-16 20:41 848Java 在运行已编译完成的类时,是通过 java 虚拟机 ... -
深入Java核心Java内存分配原理浅谈
2010-09-11 16:51 663Java内存分配与管理是Java的核心技术之一,之 ... -
使用CVS或SVN从SourceForge上获取开源项目的方法
2010-09-11 00:53 1639著名开源软件网站(www.sourceforge. ... -
Java泛型编程起始篇
2008-03-30 22:46 1165JDK1.5 令我们期待很久,可是当他发布的时候却更换版本 ... -
Tomcat5配置MySQL JDBC数据库连接池
2008-03-30 01:22 12461、使用Tomcat的Web管理应用配置数据源 启动Tom ... -
JAVA变量类型之间的相互转换
2008-03-29 01:14 1270Java的数据类型分为三大类,即布尔型、字符型和数值型,而 ... -
Tomcat的配置技巧精华详解
2008-03-16 15:09 10851、配置系统管理(Admin Web Application) ...
相关推荐
短8位uuid 用于兑换码,不重复,,本人用很好用,,分享给大家
UUID由128位数字组成,通常用16进制表示,长度为36个字符,分为五段,形式为8-4-4-4-12的32个字符。 标题“uuid.rar_C获得UUID_UUID C_c生成uuid_c语言生成uuid_uuid”表明这是一个关于使用C语言实现UUID生成的资源...
UUID(Universally Unique Identifier)和GUID(Globally Unique Identifier)是计算机编程中用于标识信息的128位数字。UUID和GUID实际上是一回事,它们遵循相同的规范,只是在不同的上下文中使用不同的名称。UUID...
java 获取 UUID 与 UUID 校验详解 Java 获取 UUID 是一个非常常见的操作,UUID(Universally Unique ...通过本文,我们可以了解到 UUID 的基本概念和使用方法,并且可以学习到如何使用 Java 实现 UUID 的生成和校验。
在Java中,虽然标准库提供有`java.util.UUID`类来生成和处理UUID,但其性能并非最优,特别是在大规模生成和解析时。为了提高效率,开发者有时会寻求更高效的解决方案,比如`fast-uuid`。 `fast-uuid`是一个专门为...
UUID(Universally Unique Identifier)是用于唯一标识信息的一种标准格式,通常由32个十六进制数字组成,分为五组,用短横线分隔。在JavaScript中,生成UUID的需求时常出现,例如在生成临时ID、数据库记录的主键...
此外,它还强调了64位高性能,这意味着它可能优化了内存使用和计算效率,能在短时间内生成大量UUID。毫秒级时间戳的提及表明它可能采用了版本1或版本2,利用当前时间作为部分UUID生成基础,以提高生成速度。自增序列...
根据RFC 4122标准,UUID由五个部分组成,分别是时间戳、时钟序列、节点ID、版本号和变种号。UUID的全局唯一性保证了在大规模系统中,每个生成的ID都是独一无二的,避免了冲突。 Math.uuid.js库的出现,旨在提供一个...
16位UUID是一种通用唯一标识符,用于标识蓝牙设备中的服务、特征和特征描述符。它是一个16位的二进制数字,通常用十六进制表示法表示。16位UUID是一种广泛使用的标识符,在蓝牙技术中扮演着重要角色。 蓝牙技术的...
标题中的"PB生成UUID"指的是...理解如何在PB中生成和使用UUID对于进行高效的网络通信和数据存储非常重要。通过结合PB的序列化能力,UUID可以作为跨平台、跨语言的数据交换中的通用标识符,极大地简化了系统设计和开发。
在ThinkPad系列笔记本中,UUID在系统配置和识别硬件方面起着关键作用。 此工具的主要功能在于: 1. **生成UUID**:当用户需要创建一个U盘启动盘来安装操作系统,尤其是Windows系统时,系统可能要求提供特定的UUID...
在Android平台上,蓝牙通信是一种常见的无线数据传输方式,尤其适用于短距离、低功耗的应用场景。UUID(Universally Unique Identifier)在蓝牙通信中扮演着关键角色,它是一种全球唯一的标识符,用于区分不同的蓝牙...
`Math.uuidCompact`函数采用模板字符串和正则表达式进行替换的方式生成UUID,其内部使用`Math.random()`生成随机数,并根据位的位置和类型进行相应的处理,最终返回一个格式化的UUID字符串。 ### 总结 通过以上...
一个UUID由32个16进制数字组成,通常分为五段,用短横线分隔,形如`8-4-4-4-12`的36个字符。在32位UUID中,我们实际上是在讨论一种简化表示,不包含短横线,但依然确保全局唯一性。 生成32位的UUID在某些场景下很...
- UUID由五个部分组成,中间用四个连字符分隔。 - 第十四位固定为“4”,第十九位高三位为“8”、“9”或“A”,以符合版本4 UUID的要求。 - 如果指定了长度,函数会生成一个指定长度的随机字符串。 #### 四、`...
例如,不要将UUID与个人敏感信息直接关联,避免无理由地收集和传输UUID,以及确保用户能够明确了解UUID的用途和处理方式。 总结来说,UUID在手机应用开发中主要用于唯一标识设备和区分用户,它在下载管理、数据分析...
UUID主要由三部分组成:时间戳、随机数和节点ID,这确保了其在全球范围内的唯一性。 首先,我们来看JDK自带的`java.util.UUID`类。这个类提供了多种生成UUID的方法,如`randomUUID()`,`nameUUIDFromBytes()`,`...
标题"通过NDK获得UUID"和描述涉及到利用Native Development Kit (NDK) 在Android系统底层获取UUID,以及通过Java层获取Android的唯一标识码。NDK允许开发者用C/C++编写部分应用,从而提高性能,特别是对于计算密集型...
然而,标准的UUID由32个16进制数字组成,形式上类似于“123e4567-e89b-12d3-a456-426655440000”,这在某些场景下可能过于冗长。在你提到的需求中,你希望生成一种简化版的UUID,即16位的纯数字Long型UUID。 为了...
uuid-ossp扩展提供了两个主要函数:uuid_generate_v1()和uuid_generate_v4(),它们分别生成基于时间的UUID(Version 1)和随机UUID(Version 4)。时间基的UUID基于当前时间和MAC地址,而随机UUID则完全基于随机数,...