小编Ami*_*shi的帖子

如何创建具有特定大小的元素的列表

说,我想快速创建一个包含1000个元素的列表.完成此任务的最佳方法是什么?

java collections performance arraylist

5
推荐指数
1
解决办法
5352
查看次数

我应该将模态值映射到SOP类UID吗?

将模态映射到SOPClassUIDs 是否可靠?换句话说,对于SOPClassUID模态的一对一映射是否正常?

dicom

5
推荐指数
1
解决办法
2288
查看次数

在有限的 16 字节字符串上写入 IEEE 754-1985 双作为 ASCII

这是我原帖的后续。但为了清楚起见,我会重复一遍:

根据 DICOM 标准,可以使用十进制字符串的值表示来存储一种类型的浮点。请参阅表6.2-1。DICOM 值表示

十进制字符串:表示定点数或浮点数的字符串。定点数应仅包含字符 0-9 以及可选的前导“+”或“-”和可选的“.”。来标记小数点。浮点数应按照 ANSI X3.9 中的定义传送,用“E”或“e”表示指数的开始。十进制字符串可以用前导或尾随空格填充。不允许嵌入空格。

“0”-“9”、“+”、“-”、“E”、“e”、“.” 和默认字符曲目的空格字符。最大 16 字节

标准是说文本表示是定点与浮点。该标准仅涉及值在 DICOM 数据集本身中的表示方式。因此,不需要将定点文本表示加载到定点变量中。

所以现在很明显,DICOM 标准隐含地推荐double(IEEE 754-1985) 来表示Value Representation类型Decimal String(最多 16 位有效数字)。我的问题是如何使用标准 CI/O 库将这个二进制表示从内存转换回 ASCII 到这个有限大小的字符串?

从互联网上的随机来源来看,这并非易事,但普遍接受的解决方案是:

printf("%1.16e\n", d); // Round-trippable double, always with an exponent
Run Code Online (Sandbox Code Playgroud)

或者

printf("%.17g\n", d); // Round-trippable double, shortest possible
Run Code Online (Sandbox Code Playgroud)

当然,这两个表达式在我的情况下都是无效的,因为它们可以产生比我限制的最大16 字节长得多的输出。那么将任意双精度值写入有限的 16 字节字符串时,最小化精度损失的解决方案是什么?


编辑:如果这不清楚,我需要遵循标准。我不能使用十六进制/uuencode 编码。

编辑 2:我正在使用 …

c floating-point precision

5
推荐指数
1
解决办法
581
查看次数

C#.NET:"多线程公寓"和"多线程"

我正在学习多线程概念(通常是针对C#.NET).阅读不同的文章,仍然无法完全理解几个基本概念.

我发布了这个问题."Hans Passant"解释得很好,但我无法理解其中的一部分.所以我开始谷歌搜索.

我读了这个没有答案的问题.

多线程和MTA是一样的吗?

假设我编写了一个WinForm应用程序,它是STA(如上面提到的Main()方法),我仍然可以在我的应用程序中创建多个线程.我可以肯定地说我的应用程序是"多线程的".这是否也意味着我的应用程序是MTA?

在谈论STA/MTA时,大多数文章(像这样)谈论COM/DCOM/Automation/ActiveX.这是否意味着DotNet与STA/MTA无关?

.net c# multithreading

5
推荐指数
1
解决办法
1058
查看次数

使用 Dapper 的 Sqlite。解析列时出错。无法将 System.Int64 类型的对象强制转换为 System.Double

我正在使用 fastcrud 和 dapper 将我的查询结果映射到我的自定义类型。我调查了 dapper 库,得出的结论是,我认为这是 Microsoft.Data.Sqlite 包的问题。不确定是否必须在那里修复,但这就是问题所在。

在解析查询结果中的每一行之前,Dapper 使用 SqliteDataReader 类中的 GetFieldType 方法来获取正确的列类型。

想象一下下表:

Id | MinTemp | MaxTemp

1  | 10.5    | 18.2 

2  | 10.6    | 20 
Run Code Online (Sandbox Code Playgroud)

sqlitedatareader.GetFieldType方法将为您提供以下类型:

System.Int64 for Id 和 System.Double for MinTemp 和 MaxTemp 这似乎是正确的,但是当它解析结果时,第 2 行发生以下错误

解析第 10 列时出错(MaxTemp=20 - Int64)无法将“System.Int64”类型的对象转换为“System.Double”类型。

由于SQLite动态类型系统,它将第 2 行的 MaxTemp 类型更改为 System.Int64。但是因为 dapper 将 MaxTemp 的类型定义为 double 它会导致上面提到的错误。

如果我将 sqlite 数据库中的 MaxTemp 值更改为 20.00001,则问题已解决,但这不正确。

使用的包:“ Microsoft.Data.Sqlite ”:“1.0.0”

有谁知道如何解决这个问题?

c# sqlite dapper asp.net-core

5
推荐指数
1
解决办法
7399
查看次数

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

如何将 UUID/GUID 值8348d2c5-0a65-4560-bb24-f4f6bcba601d(我用uuid v4 进行分类)转换为 OID/DICOM UID 2.25.174506987738820548334170905323706671133?我更喜欢 JavaScript 的解决方案。请参阅维基百科)。

我用这个在线生成器转换的示例。

javascript php c# dicom angular

5
推荐指数
2
解决办法
3761
查看次数

':' 字符,十六进制值 0x3A,不能包含在名称中。"}

我正在使用 VS2010、C#、.net 和 xmlWriter 创建符合 HL7 CAT-1 规范的 xml 文档。必须在文档中创建一个属性“sdtc:ValueSet”。由于字符“:”无效,我无法写入此属性名称。

这是实际的代码行:

writer.WriteAttributeString("sdtc:valueSet", "OID value");
Run Code Online (Sandbox Code Playgroud)

有没有人有创建属性的解决方案,如图所示?

继续研究,但决定发布这个问题,希望快速找到解决方案。

这个问题被标记为重复,我在争论是错误的。现有响应引用了编写元素或使用 LINQ。该问题使用 xmlWriter 明确说明了 Attribute。一位响应者建议使用重载的 WriteAttributeString 方法,该方法解决了问题。

c# xmlwriter

4
推荐指数
1
解决办法
3121
查看次数

如何通过 Dapper 使用 Oracle 的整数参数列表?

我正在尝试重新编写一些代码以使用 Dapper,以便我可以轻松使用参数。我正在尝试在 Oracle 数据库上执行 UPDATE 语句。要更新的列表IDs作为参数传入List<int>。我想为每个IDs传入的字段更新一个字段。以下是我所拥有的:

OracleConnection connection = ... // set earlier

public int IncreaseProcessCount(List<int> ids)
{
    var rowsAffected = connection.Execute(@"UPDATE TABLE SET PROCESSED_COUNT = PROCESSED_COUNT + 1 WHERE ID IN @ids", new { ids });
    return rowsAffected;
}
Run Code Online (Sandbox Code Playgroud)

在使用 Dapper 之前,执行语句运行得很好。现在我收到以下错误:

ORA-00936: 缺少表达式。

我当前的解决方案基于以下帖子:

带有参数列表的 Dapper 查询以及 使用 Dapper 执行插入和更新

c# sql oracle sqlparameter dapper

4
推荐指数
1
解决办法
6711
查看次数

如何将 DapperRow 转换为 Dictionary&lt;string,string&gt;

我有一个使用 Dapper Row 返回 IEnumerable 的方法。 在此处输入图片说明

但是我试图访问数据而不将其类型转换为特定的类,并且我得到了空值。 在此处输入图片说明

.net c# dapper .net-core

4
推荐指数
1
解决办法
9515
查看次数

如何在 OHIF Viewer 中从本地加载 DICOM 数据?

我浏览了 OHIF/Viewer 的文档。我发现它从 加载数据https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE。但是我想从本地文件系统加载它,所以我转换了以下代码

<script>
    var containerId = "root";
    var componentRenderedOrUpdatedCallback = function(){
      console.log('OHIF Viewer rendered/updated');
    }
    window.OHIFViewer.installViewer(
      {
      // routerBasename: '/',
      servers: {
        dicomWeb: [
          {
            name: 'DCM4CHEE',
            wadoUriRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado',
            qidoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
            wadoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
            studyInstanceUids: 'MY-DICOM-STUDY-ID',
            qidoSupportsIncludeField: true,
            imageRendering: 'wadors',
            thumbnailRendering: 'wadors',
          },
        ],
      },
    }, containerId, componentRenderedOrUpdatedCallback);
</script>
Run Code Online (Sandbox Code Playgroud)

到->

<script>
    var containerId = "root";
    var componentRenderedOrUpdatedCallback = function(){
      console.log('OHIF Viewer rendered/updated');
    }
    window.OHIFViewer.installViewer(
      {
      // routerBasename: '/',
      servers: {
        dicomWeb: [
          {
            name: 'DCM4CHEE',
            wadoUriRoot: '/assets/', …
Run Code Online (Sandbox Code Playgroud)

javascript dicom ohif

4
推荐指数
1
解决办法
2215
查看次数