问题标签 [ushort]

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 投票
3 回答
710 浏览

c# - 将 Int32 转换为 ushort 并再次返回

我正在尝试设计一个将大于 65535 的整数值打包到 ushort 中的系统。让我解释。

我们有一个系统,它使用 SQL Server 的 IDENTITY 列生成 Int32 值,并受到生产中客户端 API 的限制,该 API 将我们的 Int32 ID 溢出到 ushorts。幸运的是,客户端在任何给定时间只有大约 20 个具有这些 ID 的事物实例(我们称它们为包),并且它只需要使它们在本地兄弟姐妹中是唯一的。普遍接受的解决方案是将我们的 Int32 ID 转换为 ushorts(不,我不是指强制转换,我的意思是翻译),然后再将它们传输给客户端,但是这种方法存在一些问题:

  1. 由于未过期,某些小于 65535 的 ID 可能随时在给定客户端上运行。
  2. 我们不能有任何 ID 冲突 - 也就是说,如果包 ID 1 发送到客户端,则跟踪从 Int32 中删除 65535 多少次以在应用于 65536 时进行 ushort 的算法也会导致 1 从而导致冲突。
  3. 我们必须能够在返回时将 ushort 重构为 Int32。

我们可以用来解决这个问题的是一个单一的有符号字节字段,它会回显给我们并给我们 127 个值来玩(实际上是 117,因为我们使用 0-9 来做其他事情)。从这里开始,我将其称为“字节字段”。

我们已经讨论了三种不同的翻译例程:

  1. 乘法:在字节字段中存储我们从 Int32 中删除 65535 以制作 ushort 的次数。这具有如上所述的碰撞问题。
  2. 序列化会话状态:对于每个客户端,根据有关该客户端的事实生成一个会话 ID。然后存储一个从 1 到交付的包裹数量的 1:1 转换表,这样当客户端再次访问我们的服务器时,可以将包裹清单转换回它们已知的数据库 ID。这存在开销问题,因为我们要将序列化会话状态备份到数据库,并且我们希望每秒支持数百到数千个事务。
  3. 各种算法方法,其中字节字段是转换算法的 ID,该算法采用 Int32 并将其转换为 ushort。显然,其中许多将是简单的乘法(以增加我们可以转换的 ID 上限),但有些必须乘以较小的边界(如 32768),并加上/减去一个数字才能接近可以保证在兄弟姐妹中唯一的数字。这种方法是处理器密集型的,但应该允许我们在保持可扩展性的同时避免冲突(尽管使用这种方法,我们有一个有限的上限,在 ushort 问题由于升级而自行消失之前无法达到)。

所以我的问题是:有没有比我上面的方法更好的方法,如果没有,我应该在算法方面寻找什么(对于方法#3),当给定数字大于0 并且不能是单向哈希?

澄清:最大的问题不是 ushort 上限,而是客户端 API 使用 ushort,所以我无法组合客户端上的字节字段以获得更大的值(客户端 API 不可升级,但最终会逐步淘汰)。

0 投票
6 回答
11060 浏览

c# - C# ushort[] 到字符串的转换;这可能吗?

我有一个非常痛苦的库,目前它正在接受 C# 字符串作为获取数据数组的一种方式;显然,这使得编组 pinvokes 更容易。

那么如何将 ushort 数组按字节转换为字符串呢?我试过了:

我可以这样做,但它不会在任何接近理智的时间内完成。

我应该在这里做什么?不安全?通过某种 IntPtr 中间体?

如果它是 C++ 中的 char*,这会容易得多......

编辑:函数调用是

其中 VL 是一个“值长度”,一个 DICOM 类型,并且函数本身是由 SWIG 作为 C++ 库的包装器生成的。似乎选择的表示是字符串,因为它可以相对容易地跨越托管/非托管边界,但是在整个项目中的 C++ 代码(这是 GDCM)中,char* 只是用作字节缓冲区。所以,当你想设置你的图像缓冲区指针时,在 C++ 中它相当简单,但在 C# 中,我遇到了这个奇怪的问题。

这是黑客攻击,我知道最好的办法可能是让 SWIG 库正常工作。我真的不知道该怎么做,如果存在的话,我宁愿在 C# 端快速解决。

0 投票
2 回答
4128 浏览

c# - 超短等效

我有一个 C# 中的应用程序,我正在尝试将其转换为 java。C# 应用程序有一些 ushort 类型的变量。java中是否有等价物?

谢谢

0 投票
2 回答
20566 浏览

c# - C# 中的 short 和 ushort 有什么区别?

单词 shortushortC#有什么区别?它们都是16位!

0 投票
2 回答
15870 浏览

java - 如何在 Java 中将 short 打印为 unsigned short

我有一个短数组,其值介于 0 和短的最大值之间。我缩放数据(将其显示为 TYPE_USHORT),以便生成的短值介于 0 和 65535 之间。我需要打印一些缩放值,但不知道如何打印。数据位于数组和 BufferedImage 中。

0 投票
2 回答
1125 浏览

c# - 如何在 C#、A909 中获取 41104 的 ushort 数据?

我正在尝试将 int 值转换为 16 位无符号字符类型 (USHORT)。在一个示例中,41104 是 ushort 中的 A909,但在 C# 中我尝试使用代码示例作为(在 MSDN 文章BitConverter.GetBytes Yöntem (UInt16)的帮助下):

如何将 A909 值作为 41104 的 ushort?

0 投票
1 回答
3256 浏览

c# - 字节数组到字数组到字符串

我有这个byte[]: 00 28 00 60 00 30 10 70 00 22 FF FF

我想将每对字节组合成一个单词:0028 0060 0030 1070 0022 FFFF.

我也想把单词数组变成一个字符串:("0028 0060 0030 1070 0022 FFFF"不使用byte[])。

我修复了 SLaks 代码,它可以工作:

0 投票
1 回答
673 浏览

c# - 通过 tcpclient 对象发送 ushort ulong 字节数据

我在 c# 中的应用程序想要与第 3 方 Tcp 服务器联合发送数据并接收回响应消息...命令的语法有 UShort、ULONG、BYTE 类型数据,我的应用程序需要发送的示例命令是

然后在应用程序中我发送数据为

//或向他们发送字节

我通过服务器读取传入的消息

但返回值不是我要寻找的我的代码向服务器发送数据有什么问题吗?欢迎任何关于阅读写入数据的建议......

0 投票
3 回答
3752 浏览

java - 将原始字节值转换为 Java 类型

我在将原始字节值转换为 java 类型时遇到问题。我通过数据报套接字接收字节作为字节数组。我确切地知道哪些字节意味着什么,但我不知道如何适当地转换它们(我的意思是我知道偏移量,但不知道我认为我收到的内容是否正确;))。

例如,我想将 16 位 unsigned short 转换为 java int 类型。我在网上找到了一些例子,一个是:

另一个是相同的,但最后一行是:

当然,它会给出不同的结果。哪一个是正确的?您能否也给我一个有效的示例,但是对于无符号长整数如何做同样的事情?

先感谢您!

0 投票
1 回答
991 浏览

c# - 将 ushort[] 灰度值转换为 byte[]

我有uhort[]格式的值0-65536。但我需要字节形式的灰度值!

如何将我的 ushort 值转换为字节值?

谢谢