我正在处理一项Web服务,该服务需要传递新的GUID()
作为对服务中方法的引用。
我不熟悉C#
或GUID() object
,但需要类似PHP
的内容(因此请创建一个新对象,根据我的理解返回empty/blank GUID
)。
有什么想法吗?
答案 0 :(得分:38)
您可以尝试以下操作:
function GUID()
{
if (function_exists('com_create_guid') === true)
{
return trim(com_create_guid(), '{}');
}
return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}
答案 1 :(得分:13)
作为上述选项的替代方案:
412ab7489d8b332b17a2ae127058f4eb
它提供了一个类似 drawer.closeDrawer(GravityCompat.START);
答案 2 :(得分:5)
<?php
function guid(){
if (function_exists('com_create_guid') === true)
return trim(com_create_guid(), '{}');
$data = openssl_random_pseudo_bytes(16);
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
?>
GUID生成器
答案 3 :(得分:3)
根据Is there any difference between a GUID and a UUID?
GUID是Microsoft对UUID标准的实现。
所以,这是一个指向库的链接,让你创建以下类型的UUID:
https://github.com/search?p=1&q=uuid+php&ref=cmdform&type=Repositories
我不完全确切知道C#正在使用哪一个,但如果你正在编写一些软件并希望拥有通用的唯一标识符,那至少可以使用。
我的首选选择是https://github.com/fredriklindberg/class.uuid.php因为它只是一个简单的PHP文件而且评分最高的一个(https://github.com/ramsey/uuid)对其他库有很多依赖性,但是他可能很快就会改变(参见{{3} }})。
但是如果你真的需要GUID(根据微软标准),他们的生成过程与4122不同。维基百科声称
GUID和RFC 4122 UUID在文本显示时应该相同
https://github.com/ramsey/uuid/issues/20
在大多数情况下,你可以选择其中一个用于UUID的PHP库。我不认为你是在干扰 Microsoft组件对象模型(COM),不是吗?
答案 4 :(得分:2)
对于像我这样的google, 我发现这个snipet更准确:
public class Activator implements BundleActivator {
DefaultCamelContext camelContext;
public void start(BundleContext context) {
System.out.println("Starting the bundle");
camelContext = new DefaultCamelContext();
try {
camelContext.setName("JavaDSLContext");
camelContext.addRoutes(new FileRouter());
camelContext.start();
} catch (Exception ex) {
System.out.println("Exception occured! " + ex.getMessage());
}
}
public void stop(BundleContext context) {
System.out.println("Stopping the bundle");
if (camelContext != null) {
try {
camelContext.stop();
} catch (Exception ex) {
System.out.println("Exception occured during stop context.");
}
}
}
}
答案 5 :(得分:0)
如果您只需要一个非常唯一的ID:
$uid = dechex( microtime(true) * 1000 ) . bin2hex( random_bytes(8) );
如果ID的生成间隔超过1毫秒,则它们是100%唯一的。
如果以较短的时间间隔生成两个ID,则将生成99.9999999999999999%的ID具有全局唯一性(冲突10中的1 ^ 18)
您可以通过添加更多数字来增加此数字,但是要生成100%的唯一ID,您将需要使用全局计数器。
如果您确实确实需要RFC遵从性,它将作为有效的版本4 GUID通过:
$guid = vsprintf('%s%s-%s-4000-8%.3s-%s%s%s0',str_split(dechex( microtime(true) * 1000 ) . bin2hex( random_bytes(8) ),4));
这遵循了意图,但没有遵循RFC的要求。除其他差异外,还有一些随机数短。 (如果需要,可以添加更多随机数字)与100%兼容的代码相比,这样做的好处是速度快。您可以test your GUID here