问题标签 [unsigned]
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.
java - 解决所有 Java 字节都已签名这一事实的最佳方法是什么?
在 Java 中,没有无符号字节之类的东西。
处理一些低级代码时,有时您需要处理无符号值大于 128 的字节,这会导致 Java 将它们解释为负数,因为 MSB 用于符号。
解决这个问题的好方法是什么?(说不使用 Java 不是一种选择)
java - 如何创建一个表示 Java 的字符串,就好像它是无符号的 64 位值一样
我的组件被传递了一个长值,我稍后将其用作缓存中的键。密钥本身是 long 值的字符串表示形式,就好像它是无符号的 64 位值一样。也就是说,当我的组件被交给-2944827264075010823L时,我需要将其转换为字符串键“15501916809634540793”。
我有一个解决方案,但它似乎是蛮力的,它让我有点反胃。本质上,我将 long 转换为十六进制字符串表示形式(因此 -2944827264075010823L 变为“d721df34a7ec6cf9”)并将十六进制字符串转换为 BigInteger:
然后我使用 longValueString 作为进入缓存的键。
我不能使用 Long.toString(longValue,16),因为它返回绝对值的十六进制字符串,前缀为“-”。
所以我的 convertLongToHexString 看起来像这样:
必须有一种更优雅的方式来做到这一点。有什么建议么?
integer - 有符号整数与无符号整数
我是否正确地说有符号整数和无符号整数之间的区别是:
- 无符号可以持有更大的正值,没有负值。
- 无符号使用前导位作为值的一部分,而有符号版本使用最左边的位来识别数字是正数还是负数。
- 有符号整数可以同时包含正数和负数。
还有其他区别吗?
c++ - 大多数签名/未签名警告的可接受修复?
我自己坚信,在我正在处理的项目中,有符号整数是大多数情况下的最佳选择,即使其中包含的值永远不会是负数。(更简单的反向循环,更少的错误机会等,特别是对于只能保存在 0 和 20 之间的值的整数,无论如何。)
大多数出错的地方是 std::vector 的简单迭代,过去通常这曾经是一个数组,后来被更改为 std::vector。所以这些循环通常看起来像这样:
因为这种模式经常被使用,关于有符号和无符号类型之间这种比较的编译器警告垃圾邮件的数量往往会隐藏更多有用的警告。请注意,我们绝对没有超过 INT_MAX 元素的向量,并且请注意,到目前为止,我们使用了两种方法来修复编译器警告:
这通常有效,但如果循环包含任何代码,如“if (i-1 >= 0) ...”等,则可能会静默中断。
此更改没有任何副作用,但确实使循环的可读性降低了很多。(而且打字更多。)
所以我想出了以下想法:
您所看到的基本上是 STL 类,其返回 size_type 的方法被覆盖以仅返回“int”。需要构造函数,因为它们不是继承的。
作为开发人员,如果您在现有代码库中看到这样的解决方案,您会怎么看?
您会认为“哇,他们正在重新定义 STL,多么巨大的 WTF!”,或者您会认为这是一个很好的简单解决方案,可以防止错误并提高可读性。或者您可能更愿意看到我们花了(半天)左右的时间来更改所有这些循环以使用 std::vector<>::iterator?
(特别是如果此解决方案与禁止将无符号类型用于原始数据(例如无符号字符)和位掩码之外的任何内容相结合。)
ruby - 使用 ruby 将存储为有符号的无符号整数转换回原始值
一个 C 程序将它认为是 64 位无符号整数放入 Postgres 数据库中类型为 int8 的列中。对于 Postgres,int8 始终是 'signed int8'(没有像 'unsigned int8' 这样的东西)。因此,我的 Ruby 程序在该空间的上半部分显示从 Postgres 检索到的数字为负数。
在 Ruby 中,获取 -ve 整数并将其转换为 C 程序员想要的 64 位无符号整数的正确方法是什么?
c++ - C++ 枚举到无符号整数比较
我在目前正在处理的代码中发现了这一点,并认为这是我遇到的一些问题的原因。
在某处的标题中:
然后稍后 - 初始化:
并使用
调试代码,nextIndex 中的值不太有意义(它们非常大),我发现它被声明了:
因此,INVALID_INDEX 的初始设置使 unsigned int 下溢并将其设置为一个巨大的数字。我认为这是导致问题的原因,但仔细观察,测试
行为正确,即当 nextIndex 为“大 +ve 值”时,它从未执行 if 的主体。
它是否正确?这是怎么回事?枚举值是否被隐式转换为与变量相同类型的无符号整数,因此以相同的方式包装?
sql-server - 如何在 SQL Server 中存储无符号 64 位整数?
我使用一个使用相当大的数字的应用程序,我需要将数据存储为无符号的 64 位整数。我更喜欢只存储它而不用担心位操作或类似的事情,因此不同的程序可以以不同的方式使用数据。
c# - 是否有与 .NET 兼容但不支持无符号类型的语言?
假设我正在用 C# 编写一个库,但我不知道谁会使用它。
库的公共接口有一些无符号类型——uint、ushort。显然,这些类型不符合 CLS,并且从理论上讲,可能存在无法使用它们的语言。
现实中有这样的语言吗?
python - python中unicode字符串的转换
我需要将 Python 中的 unicode 字符串转换为其他类型,例如无符号和有符号 int 8 位、无符号和有符号 int 16 位、无符号和有符号 int 32 位、无符号和有符号 int 64 位、双精度、浮点数、字符串、无符号和有符号8 位,无符号和有符号 16 位,无符号和有符号 32 位,无符号和有符号 64 位。
我需要你们的帮助。
python - 如何确定 Python 变量的类型?
如何查看变量的类型是无符号 32 位、有符号 16 位等?
我如何查看它?