问题标签 [packed-decimal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2266 浏览

reflection - Kotlin - 是否有一种聪明的方法可以为类的所有方法抛出 NotImplementedError?

我需要实现一个ResultSet具有数百种方法的接口 ()。现在,我将只实现这些方法的一个子集,NotImplementedError为其他方法抛出一个。

在 Java 中,我找到了两个解决方案:

  1. 创建一个AbstractResultSet实现的抽象类ResultSet,声明所有要抛出的方法NotImplementedError。没有黑客,但有很多样板代码。
  2. 用于Proxy.newProxyInstanceInvocationHandler. 更少的代码,但也不太直接用于其他编码器。

Kotlin 有第三种选择吗?

在我的情况下,我需要ResultSet在 IBM 数据集(包含压缩小数、二进制字段、分区数字、可变长度的行等)上实现 aa,以通过SQLServerBulkCopy. 我不知道ResultSet这个类调用了哪些方法,所以,现在,我将只实现“最常用”的方法,记录对未实现方法的调用。

0 投票
1 回答
154 浏览

assembly - 加法大于 15 时 x86 程序集错误中的解压缩十进制格式

这是一个用 C++ 编写的内联 asm 函数。Digits 是一个 4096 个字符长的字符数组,而 rhs.digits 是一个单独的数组。Digits 是目标,rhs.digits 是要添加到数字的数组。

我遇到的问题是当加法导致数字大于 15 时的进位。所以 8+8、8+9、9+9。我不是 100% 确定 AAA 是如何工作的,但我相信它会丢弃值的高位并将低位放入 AH。这意味着因为 16、17 和 18 不能用一个十六进制数字表示并且需要两个,所以高位位被丢弃并忽略。

这通过检查输出得到加强。如果 8+8 0 放在那个位置。如果是 8+9, 1 和 9+9, 2。这将对应于它们的十六进制表示。我尝试改用 DAA,但这也不起作用。

我怎样才能解决这个问题?如果有说明说明这一点?

谢谢你们的帮助。

0 投票
2 回答
1068 浏览

oop - 将返回类型定义为方法的打包数字

我正在学习 ABAP 对象。我想要一个返回压缩数字类型的对象方法。我终于做到了,但我不知道这是否是正确的方法,我需要一些我在网上找不到的进一步解释。

对于整数,它工作正常:

对于打包号码,它不会:

错误:必须完全指定 RETURNING 参数的类型

错误:必须完全指定 RETURNING 参数的类型

(1)有没有办法让它与p类型一起工作?

我通过使用使它工作dec5_2

(2) 它是正确的选择吗?有类似类型的列表吗?

另外,我找到了这个解决方案,但它对我不起作用:

未知类型“TYPEPRICE”。

(3) 有没有办法使这个解决方案起作用?

0 投票
2 回答
2309 浏览

java - 无法在java中将comp 3解压缩为数字

我在互联网上引用了一个代码来将 comp 3 解压缩为 java 中的数字。我试图将示例 comp3 文件传递​​给代码,但没有得到正确的解包数据。我得到了一些奇怪的数字。我是这个概念的新手(comp 3),所以你们能帮我解决这个问题。提前致谢

下面是我的代码



我传递的 Comp3 文件有值x019F

转换后,我得到了解压缩的数据783031394

0 投票
1 回答
280 浏览

java - EBCDIC 解包 comp-3 数据在 Java 中返回 40404**

我已经使用下面链接中提供的解包数据逻辑用于 java 如何使用 Java 解包 COMP-3 数字? 但是对于源中的空数据,它会返回 404040404,就像在 Java 解包代码中一样。我知道这是 ebcdic 中的空间,但是如何通过处理这个空间来解包或避免它。

0 投票
1 回答
490 浏览

c# - 读取 8 个字符的压缩十进制 (Comp-3) 数值;但持有 13 位数字并转换为 13 位数值

我正在寻找代码来读取压缩十进制 (Comp -3) 数值的文本文件,该数值是在主机系统中创建的,为 8 个字符,但包含压缩十进制格式的 13 位数字。

我遇到了下面的代码

但上面的代码没有说坏迹象蚕食。

谁能确认我是否正确阅读

注意:它不是重复的,因为我正在寻找可以读取文件并将参数传递给 Unpack 方法的代码。

作为参考,我添加了文件中的数据的样子:

图片

0 投票
3 回答
212 浏览

c - 解压 16 位 BCD 的最有效公式?(例如 0x1234 到 0x01020304)

是否有一些小技巧可以有效地解压缩 16 位压缩 BCD 数字?

以步行方式执行此操作需要 10 次操作(3 个班次、4 个 AND 和 3 个 OR 或 ADD):

对于多路 ADD/OR,关键路径长度将为 3,但这些操作往往是二进制的,因此大多数 CPU 将查看长度为 4 的关键路径。

这可以更有效地完成吗?

注意:对于某些目的,如果可以特别有效地解包半字节的某些排列,例如如果要解包的单词来自我可以完全控制其创建的查找表(这样我可以将每个数字粘贴到任何地方),它可能同样有用我想)。在这种情况下使用打包而不是解包 BCD 的目的是将内存压力减半并避免超过 L1 缓存的大小,通过增加 CPU 的 ALU 上的负载来减轻过饱和的内存子系统的负载。

例如,如果我对 0x1324 之类的数字进行置换,那么简单的去交错会产生 0x01020304:

这只是关键路径长度为 3 的三个操作,比原始版本有了很大的改进......

0 投票
2 回答
92 浏览

c - CPU 使用率 C Packed struct vs Unsigned Long Long 操作

我需要对 48 位变量进行一些操作,所以我有两个选择:

  1. 使用 48 位变量创建我自己的结构,或
  2. 使用unsigned long long(64 位)。

由于操作不会溢出 48 位,我认为使用 64 位变量是一种矫枉过正,所以我创建了一个基本结构

并创建了一些代码来检查操作的速度

但我得到了以下结果

因此,使用unsigned long long的操作比使用打包结构的操作花费的时间更少。

  • 这是为什么?
  • 那么使用unsigned long long会更好吗?
  • 有没有更好的方法来打包结构?

由于我现在正在展开循环,因此使用正确的数据结构可能会显着影响我的应用程序的性能。

谢谢你。

0 投票
0 回答
982 浏览

python-3.x - 用python解压大型机压缩十进制

我有从大型机导出的 txt 文件,其中包含打包的十进制数据,看起来像垃圾数据。我想使用 python 脚本将其转换为可读格式。

例如。将此 ��% 转换为 5420

0 投票
2 回答
167 浏览

ascii - 如何使用 Java 解压缩 COMP 数字?

我找到了解压 COMP-3 数字的有用链接,但这次我需要解压 COMP 数字,有人知道如何解压吗?非常感谢!