理想情况下,我希望像example.com/resources/äFg4?N??5最小数量的可见字符,但不要介意它们必须在通过HTTP传输之前进行百分比编码.
你能告诉一个方案,它可以有效地将128b UUID编码为最少数量的可见字符,而不会产生具有破坏URL的字符的结果吗?
我正在使用Javas UUID并需要将UUID转换为字节数组.奇怪的是,UUID类没有提供"toBytes()"方法.
我已经发现了两种方法:
UUID.getMostSignificantBits()
and
UUID.getLeasSignificantBits()
Run Code Online (Sandbox Code Playgroud)
但是如何将其转换为字节数组呢?结果应该是带有这些两个值的byte [].我不知何故需要做Bitshifting但是,怎么样?
更新:
我发现:
ByteBuffer byteBuffer = MappedByteBuffer.allocate(2);
byteBuffer.putLong(uuid.getMostSignificantBits());
byteBuffer.putLong(uuid.getLeastSignificantBits());
Run Code Online (Sandbox Code Playgroud)
这种方法是否正确?
还有其他方法(用于学习目的)吗?
非常感谢!!延
我需要为给定的唯一字符串生成唯一的记录ID.
我尝试使用uuid格式似乎很好.
但我们觉得这很长.
所以我们需要将uuid字符串9f218a38-12cd-5942-b877-80adc0589315减少到更小.通过删除' - '我们可以节省4个字符.从uuid中删除最安全的部分是什么?我们不需要普遍唯一的id,但我们喜欢使用uuid作为源,但减少了字符串.
我们需要特定于站点/数据库的唯一ID(SQL Server/ADO.NET数据服务).
任何语言的任何想法或样本都可以
提前致谢
我用来UUID生成随机代码。但它返回了我 20 多个数字。是否有任何其他算法机制可以返回唯一的 8 位代码或任何其他方式来减少 UUID 代码长度。
代码
\n\nconst uuidv4 = require('uuid/v4');\nuuidv4(); // \xe2\x87\xa8 '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'\nRun Code Online (Sandbox Code Playgroud)\n 我正在尝试缩短java UUID,同时保留与UUID相同的唯一性.我写了以下代码:
public static void main(String[] args) {
UUID uid=UUID.randomUUID();
String shortId=to62System(uid.getMostSignificantBits())+
to62System(uid.getLeastSignificantBits());
System.out.println(shortId);
}
static char[] DIGITS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
static int RADIX = DIGITS.length;
public static String to62System(long value) {
if (value == 0) {
return "0";
} else {
char[] buf = new char[11];
int charPos = 10;
long i = value;
while (i != 0) {
buf[charPos--] = DIGITS[Math.abs((int) (i % RADIX))];
i /= RADIX;
}
return new String(buf, charPos + 1, (10 - charPos)); …Run Code Online (Sandbox Code Playgroud) 我想采用类型UUID并以Base64编码格式输出它,但是如果输入方法Base64和输出UUID如何实现这一点似乎并不明显.
更新虽然不是对我的用例的明确要求,但是很高兴知道所使用的方法是否使用UUID的原始UUID(UUID实际上是128位),正如标准的十六进制编码那样.
存储人类可读且广泛数据库兼容的UUID的最小方法是什么?
我正在考虑使用十六进制值的某种char数组?