首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JavaScript中将UUID/GUID转换为OID/DICOM UID?

如何在JavaScript中将UUID/GUID转换为OID/DICOM UID?
EN

Stack Overflow用户
提问于 2019-09-19 10:37:31
回答 3查看 3.1K关注 0票数 5

如何将像8348d2c5-0a65-4560-bb24-f4f6bcba601d这样的UUID/GUID值(我用uuid v4类型化)转换为OID/DICOM UID,比如2.25.174506987738820548334170905323706671133?我更喜欢JavaScript中的解决方案。见维基百科)。

我用联机生成器转换的示例。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-19 15:22:12

基于@AmitJoshi的其他答案;我现在可以回答我的问题:

下面是JavaScript函数:

代码语言:javascript
复制
function GenerateUidFromGuid(){
   var guid = uuid.v4();                         //Generate UUID using node-uuid *) package or some other similar package
   var guidBytes = `0${guid.replace(/-/g, "")}`; //add prefix 0 and remove `-`
   var bigInteger = bigInt(guidBytes,16);        //As big integer are not still in all browser supported I use BigInteger **) packaged to parse the integer with base 16 from uuid string
   return `2.25.${bigInteger.toString()}`;       //Output the previus parsed integer as string by adding `2.25.` as prefix
}

以下是参考资料:

小提琴

票数 4
EN

Stack Overflow用户

发布于 2019-09-19 13:05:57

我知道您正在寻找JavaScript示例;但是下面是一个c#代码。看看能不能把它翻译成JavaScript。变量名称和数据类型是自我解释的,这可能有助于您翻译。

下面的代码是基于@VictorDerks的答案的。答案中甚至解释了一个更快的方法,请看。

代码语言:javascript
复制
public string GenerateUidFromGuid()
{
    Guid guid = Guid.NewGuid();
    string strTemp = "";
    StringBuilder uid = new StringBuilder(64, 64);
    uid.Append("2.25.");

    //This code block is important------------------------------------------------
    string guidBytes = string.Format("0{0:N}", guid);
    BigInteger bigInteger = BigInteger.Parse(guidBytes, NumberStyles.HexNumber);
    strTemp = string.Format(CultureInfo.InvariantCulture, "{0}", bigInteger);
    uid.Append(strTemp);
    //This code block is important------------------------------------------------

    return uid.ToString();
}

Guid guid看起来像f254934a-1cf5-47e7-913b-84431ba05b86

string.Format("0{0:N}", guid)返回0f254934a1cf547e7913b84431ba05b86。格式被移除并以零作为前缀。

BigInteger.Parse(guidBytes....返回322112315302124436275117686874389371782BigInteger.Parse将将字符串转换/解析为大整数数据类型。NumberStyles决定如何设置格式。

考虑到这个问题,我认为您已经知道了解释这里这里的细节。

票数 5
EN

Stack Overflow用户

发布于 2020-10-29 12:09:59

为了防止您想要达到相同目的的库,可以使用由dicomuid.js ( 桑杜斯 (StackOverflow配置文件)编写的)库。

这不需要组织根前缀;这使用“2.25”。作为前缀。这使用了通用唯一标识符(UUID)。它将UUID转换为单个大小数。

下面是从github复制的代码

代码语言:javascript
复制
// Create new DICOM UID.
// Result will be like 2.25.176371623884904210764200284661930180516
var uid1 = DICOMUID.create();

// Create DICOM UID from a RFC4122 v4 UUID.
// Result for line below is 2.25.329800735698586629295641978511506172918
var uid2 = DICOMUID.create("f81d4fae-7dec-11d0-a765-00a0c91e6bf6");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58009141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档