将负数转换为无符号类型(ushort、uint 或 ulong)

2024-03-05

如何将一些负数转换为unsigned types.

Type type = typeof (ushort);
short num = -100;

ushort num1 = unchecked ((ushort) num); //When type is known. Result 65436

ushort num2 = unchecked(Convert.ChangeType(num, type)); //Need here the same value

只有4种类型。因此,您可以为此编写自己的方法。

private static object CastToUnsigned(object number)
{
    Type type = number.GetType();
    unchecked
    {
        if (type == typeof(int)) return (uint)(int)number;
        if (type == typeof(long)) return (ulong)(long)number;
        if (type == typeof(short)) return (ushort)(short)number;
        if (type == typeof(sbyte)) return (byte)(sbyte)number;
    }
    return null;
}

这是测试:

short sh = -100;
int i = -100;
long l = -100;

Console.WriteLine(CastToUnsigned(sh));
Console.WriteLine(CastToUnsigned(i));
Console.WriteLine(CastToUnsigned(l));

Outputs

65436
4294967196
18446744073709551516

更新 10/10/2017

通过 C# 7.1 泛型类型的模式匹配功能,您现在可以使用 switch 语句。

感谢@quinmars 的建议。

private static object CastToUnsigned<T>(T number) where T : struct
{
    unchecked
    {
        switch (number)
        {
            case long xlong: return (ulong) xlong;
            case int xint: return (uint)xint;
            case short xshort: return (ushort) xshort;
            case sbyte xsbyte: return (byte) xsbyte;
        }
    }
    return number;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将负数转换为无符号类型(ushort、uint 或 ulong) 的相关文章

  • 错误:表达式不可赋值三元运算符

    我有以下代码 MPLABX XC8 编译器给出此错误 错误 表达式不可分配 U1ERRIRbits RXFOIF uart1 oerr 1 uart1 oerr 0 这是相关代码部分 typedef union struct bool fe
  • 带有 ASP.NET 按钮回发的 jQuery UI 对话框

    我的 ASP NET 页面上有一个运行良好的 jQuery UI 对话框 jQuery function jQuery dialog dialog draggable true resizable true show Transfer hi
  • C++中类成员函数相互调用有什么好处?

    我是 C 新手 我发现下面的编程风格对我来说很有趣 我在这里写了一个简化版本 include
  • CMake(Ninja 后端)使用 /MT 编译

    我有一个类似的问题CMake 使用 MT 而不是 MD 进行编译 https stackoverflow com questions 14172856 cmake compile with mt instead of md但有一些差异 我正
  • 从结构调用 C++ 成员函数指针

    我找到了有关调用 C 成员函数指针和调用结构中的指针的信息 但我需要调用结构内部存在的成员函数指针 但我无法获得正确的语法 我在类 MyClass 的方法中有以下代码片段 void MyClass run struct int MyClas
  • 获取列表框中视图中的项目

    我有一个 ListBox 其属性 VirtualizingStackPanel VirtualizationMode 设置为 回收 我正在绑定一个自定义集合 实现IList and IList
  • 如何在 Linux 上重新实现(或包装)系统调用函数?

    假设我想完全接管 open 系统调用 也许要包装实际的系统调用并执行一些日志记录 一种方法是使用 LD PRELOAD http scaryreasoner wordpress com 2007 11 17 using ld preload
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • 注入包含接口的所有已注册实现的 Enumerable

    给出以下接口 public interface IMyProcessor void Process 我希望能够注册多个实现 并让我的 DI 容器将它们的可枚举注入到这样的类中 public class MyProcessorLibrary
  • X 轴和 Z 轴上的 Quaternion.Slerp,无 Y 轴

    I am trying to rotate the Player about X Y and Z axis The Y axis should not move from last angle Example if I rotate 45
  • 如何在VS2005中使用从.bat而不是.exe启动的外部程序进行调试?

    在我的 c 项目的调试属性中 我选择了 启动外部程序 并选择了我希望将调试器附加到的程序的 exe 但是 现在我需要从 bat 文件而不是 exe 启动程序 但 VS2005 似乎不允许这样做 这可能吗 编辑 为了澄清 我需要调试从 bat
  • Clang 5.0 上的 vsprintf 和 vsnprintf [-Wformat-nonliteral] 警告

    我有这段代码 static void err doit int errnoflag int level const char fmt va list ap int errno save unsigned long n char buf MA
  • Windows Phone 的 JSON 反序列化

    我正在尝试反序列化以下 JSON 但我真的不知道如何使用 JSON net 来完成这项工作 我正在使用 C 和 JSON Net 库 我的 JSON 如下 found 3 bounds 43 54919 172 62148 43 54487
  • c++ - <未解析的重载函数类型>

    在我的班级里叫Mat 我想要一个将另一个函数作为参数的函数 现在我有下面 4 个函数 但是在调用 print 时出现错误 第二行给了我一个错误 但我不明白为什么 因为第一行有效 唯一的区别是功能f不是班级成员Mat but f2是 失败的是
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • 如何防止 Lotus Notes 用户转发或复制通过 System.Net.Mail 发送的邮件?

    我想使用 SMTP 客户端 uiing microsft net 以 C 作为编程语言发送电子邮件 但是对于通过SMTP客户端发送的电子邮件 我们是否可以添加 禁止转发 或 禁止复制 等安全功能 我不希望电子邮件的收件人转发或复制电子邮件的
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • C++ 中的析构函数

    我的 AB h 文件中有一个构造函数 class AB private int i public AB i 0 constructor AB i 0 destructor virtual void methodA unsigned int
  • 如何配置 qt Creator 以显示 C++ 代码而不是反汇编程序?

    昨天我做了很多事情 比如更新 GCC Clang 和重新安装 Qt Creator 今天 在逐步调试我的代码时 调试器显示的是反汇编代码 而不是我编写的 C 代码 紧迫F10 or F11 调试器正在进入汇编代码而不是 cpp nor h我
  • 如何使用 Microsoft Graph API 更新 MailboxSettings

    我想从不同的日历更新邮箱设置 如何构建可以通过 Microsoft Graph 更新 MailboxSetting 的请求 这是我的代码示例 但有例外 代码示例 User obj GraphServiceClient Users roomC

随机推荐

  • 如何重命名 MongoDB 数据库?

    我的 MongoDB 数据库名称有一个拼写错误 我正在尝试重命名该数据库 I can copy http www mongodb org display DOCS Copy Database Commands然后像这样删除 db copyD
  • OpenGL 3.0 中 glDrawPixels 的替代品?

    所以我知道 glDrawPixels 已被弃用 有没有做同样事情的函数 我想过使用纹理 但它们是由当前矩阵修改的 与 glDrawPixels 绘制的像素不同 我想过使用纹理 但它们被当前矩阵修改了 当前矩阵 在 3 0 中已弃用 并在 3
  • 在 HTML 5 画布上创建 Reuleaux 多边形的函数

    我正在开展一个使用 HTML 5 画布设计系统艺术作品的项目 为了给我的作品带来更有机和多样化的感觉 我想要一个创建 reuleaux 多边形的函数 我认为可能有一种方法可以改变我的draw sharp polygon center pos
  • UITableViewCell 中的 UILabel 大小不正确(分配文本后的动画)

    文本在一个UILabel显示后闪烁 首先以省略号出现在单行上 然后占据其适合的 2 行 请注意 单元格高度没有改变 问题是这样的 标签 朋友们 快来参与并填满盒子吧 首先出现被截断的并在视图转换期间错位为 这种情况仅发生在装有 iOS 8
  • 为什么我应该更喜欢使用成员初始值设定项列表?

    我偏向于在构造函数中使用成员初始值设定项列表 但我早已忘记了其背后的原因 您是否在构造函数中使用成员初始值设定项列表 如果是这样 为什么 如果没有 为什么不呢 For POD https stackoverflow com a 146454
  • SpyOn TypeORM 存储库可更改单元测试 NestJS 的返回值

    我想对我的 TypeORM 数据库调用进行单元测试 我已经用有效数据模拟了我所有的 TypeORM 存储库 但我想监视存储库并更改 TypeORM 的返回值形式 我怎么做 import INestApplication from nestj
  • PowerShell - 如何在运行空间中导入模块

    我正在尝试用 C 创建一个 cmdlet 代码看起来像这样 Cmdlet VerbsCommon Get HeapSummary public class Get HeapSummary Cmdlet protected override
  • 更改 WooCommerce 电子邮件通知中的订单项目元数据

    我需要更改 自定义 WooCommerce 电子邮件通知的特定订单项元数据 但我找不到解决方案 I found one https stackoverflow com a 52684694 1354580 但它用于从 Woocommerce
  • 如何高效更新文件修改频繁的Impala表

    我们有一个基于 Hadoop 的解决方案 CDH 5 15 我们可以在 HDFS 的某些目录中获取新文件 在这些目录的顶部 我们有 4 5 个 Impala 2 1 表 在 HDFS 中写入这些文件的过程是 Spark Structured
  • android 套接字 DataOutputStream.writeUTF

    我写套接字客户端 clientSocket new Socket 192 168 1 102 15780 outToServer new DataOutputStream clientSocket getOutputStream 所有作品
  • NPM:如何获取 ./node_modules/.bin 文件夹?

    我在安装 npm 时遇到问题 我创建了一个项目 比如项目 A cd projectA npm install sails 但安装后找不到 sails 命令 我知道它已成功安装在 projectA node modules目录 但无法获取可执
  • heroku:无法检测到此应用程序的默认语言

    第一次使用 Heroku 试图推动 我已经运行命令 heroku create buildpack heroku python 它显示 heroku create buildpack heroku python Creating app d
  • “强”迭代器指针/引用

    是否存在 强 迭代器之类的东西 我的意思是迭代器坚持它所引用的值而不是它所在的地址 这样如果该值被交换到不同的地址 迭代器将继续在这个新地址中指向它 不管它在数据结构中移动到哪里 是的 也不是 但为什么 你想要什么std iter swap
  • 如何更改或查找 JTable 中的列类型

    我想插入JCheckBox在每一行中JTable所以我尝试更改我的第一个列类型 当我尝试此代码时 出现 java lang String 无法转换为 java lang Boolean 错误 DefaultTableModel model
  • Caffe/pyCaffe:设置所有 GPU

    是否可以为Caffe 尤其是pyCaffe 设置所有GPU 就像是 caffe train solver examples mnist lenet solver prototxt gpu all 这两个分支现在都支持多 GPU 一段时间了
  • WordPress 随机数存储在哪里?

    我试图找出 WordPress 存储所有随机数的位置 但却没能找到线索 我首先检查了数据库 但找不到任何名为 wp nonces 的表 我 11 个月前发布了这个问题 我收到的所有答案都很好 对我帮助很大 但他们都没有解决 WordPres
  • 字段列表中的未知列错误 Rmysql

    我使用编写了一个 data frame dbWriteTable con name db all df overwrite T row names F 使用MySQL成功连接到MySQL 现在我有第二个数据框 它具有类似的结构并尝试使用 d
  • 如何查看给定 npm 模块的依赖关系树?

    如何获取可用于 npm 但未安装在本地的模块树 npm ll执行本地安装的软件包的工作 但它不适用于未安装的模块或全局安装的模块 I tried npm list bower但事实并非如此 无需安装即可生成NPM依赖树 使用命令建立依赖关系
  • 两个 github 帐户推送到同一个存储库 [重复]

    这个问题在这里已经有答案了 所以这是一个非常具体的用例 如果任何 GitHub 专家可以帮助我 那就太好了 在我的 Linux 笔记本电脑中 我想推送same使用两个不同的 GitHub 用户名的 GitHub 存储库 我已在本地计算机中设
  • 将负数转换为无符号类型(ushort、uint 或 ulong)

    如何将一些负数转换为unsigned types Type type typeof ushort short num 100 ushort num1 unchecked ushort num When type is known Resul