当前位置: 首页 > 面试题库 >

在Swift中将有符号转换为无符号

龚永新
2023-03-14
问题内容

在C语言中,我可以使用数字做一些技巧:

uint8_t value = 0
int delta = -1
uint8_t result = value + delta  /* result will be 0xFF */

在Swift中有没有办法做到这一点?请注意,相同的方法无效:

let value: UInt8 = 0
let delta: Int = -1
var result: UInt8 = value + delta  // Error, even typecasting in different ways...

有没有一种方法可以让C的行为在Swift中减法?

谢谢!


问题答案:

所有有符号和无符号整数类型都有一个bitPattern:构造函数,该构造函数从具有相同内存表示形式的有符号(反之亦然)创建无符号数字:

let delta: Int8 = -1
let result: UInt8 = UInt8(bitPattern: delta) // 0xFF = 255


 类似资料:
  • 问题内容: 假设我有这个号码。我如何将其称为无符号变量?像C一样 问题答案: 假设 : 您会想到2的补码表示法;和, 通过您 的意思是 32位无符号整数, 那么您只需将其添加为负值即可。 例如,将此应用于-1: 假设1表示您希望将-1视为一个1位的实字符串,而假设2表示您希望其中的32个。 但是,除了你,没人可以说你隐藏的假设是什么。例如,如果考虑到1的补码表示形式,则需要应用前缀运算符。Pyth

  • 问题内容: 在Java中,是否有一种简单而优雅的方法将无符号字节值转换为有符号字节值?例如,如果我所拥有的只是int值240(二进制(24位+ 11110000)= 32bits),如何获得该int的带符号值? 问题答案: 除了,Java没有其他无符号值。考虑以下代码段: 结果将为-1,因为最低的8位已复制到byte变量中。

  • 我想优化我的代码,避免错误,我有这个功能,但我认为我可以改善和避免内存问题。 该函数的思想是接收这种样式的字符串“0123456789”并将其传递给0x01、0x23、0x45、...在无符号字符数组中。任何提示,良好的实践或改进将是非常有用的。 用法是这样的: 在函数缓冲区中结束如下:

  • 为什么在C 11中无符号短*无符号短转换为int? int太小,无法处理这行代码显示的最大值。 MinGW 4.9.2溢流 因为(来源) USHRT_MAX=65535 (2^16-1)或更大* INT_MAX=32767 (2^15-1)或更大* 和(2^16-1)*(2^16-1)=~2^32。 这个解决方案会有什么问题吗? 此程序 给出输出 在…上 两者都有 这证明在这些编译器上,被转换为。

  • 我在尝试将未签名的 char 数组转换为 jstring 时遇到问题。 上下文是我正在使用来自Java的共享c库。所以我正在实现一个JNI c文件。我在库中使用的函数会恢复 我在 JNI C 文件中实现的函数返回一个 jstring。 所以我需要把无符号的char数组转换成jstring。 但是,尽管数组应该只包含20个字节,但我在Java中随机得到22或23个字节......(虽然 20 个字节

  • 问题内容: 我正在用selenium测试站点,我需要向其中一个字段发送电子邮件。到目前为止,我正在使用以下Java方法: 但是由于(对我而言)一个未知的原因,这正是将这个值发送到字段: (因此,基本上将“ @”替换为“ v”) 出于好奇:我是捷克人,有捷克语键盘。写“ @”符号的一种快捷方式是rightAlt + v,因此我相信可以连接… 因此,我正在搜索始终写有“ @”符号的任何“防弹” met