java中类似Swift 3的十六进制到Int8的转换

java中类似Swift 3的十六进制到Int8的转换,swift,swift3,Swift,Swift3,我在Swift 3中将十六进制值转换为Int8时遇到问题 在Java中,它如下所示: (bytes是Java中的byte数组和Swift中的Int8数组) Java: bytes[0] = (byte) 0xFB bytes[0] = Int8(0xFB) Swift3: bytes[0] = (byte) 0xFB bytes[0] = Int8(0xFB) 在Swift中尝试此操作时,Xcode会抛出以下错误: 错误:从“Int”转换为“Int8”时整数溢出 Int8可以存储从-12

我在Swift 3中将十六进制值转换为Int8时遇到问题

在Java中,它如下所示:

bytes
是Java中的
byte
数组和Swift中的
Int8
数组)

Java:

bytes[0] = (byte) 0xFB
bytes[0] = Int8(0xFB)
Swift3:

bytes[0] = (byte) 0xFB
bytes[0] = Int8(0xFB)
在Swift中尝试此操作时,Xcode会抛出以下错误:

错误:从“Int”转换为“Int8”时整数溢出


Int8
可以存储从-128
Int8.min
)到127
Int8.max
)的值


您的值
0xFB
251,因此它不能用
Int8
表示一个
Int8
可以存储一个从-128
Int8.min
)到127
Int8.max
)的值


您的值
0xFB
251,因此它不能用
Int8

表示,实际上字节在Swift中是
UInt8
。我从java重写了应用程序,所以我需要在Swift中重新创建此操作。结果Java中的此操作将为-6。是否尝试创建位模式为0xFB的
Int8
?如果是这样,则有一个初始化器;)Thx帮助:)位模式是解决方案。我使用simple framework快速简单地将十六进制转换为Int8。实际上,字节在Swift中是
UInt8
。我从java重写了应用程序,所以我需要在Swift中重新创建此操作。结果Java中的此操作将为-6。是否尝试创建位模式为0xFB的
Int8
?如果是这样,则有一个初始化器;)Thx帮助:)位模式是解决方案。我使用simple framework快速简单地将十六进制转换为Int8。我知道Swift中的Int8的范围是-128到127。@WujoFefer:那么为什么你要将
251
放在一个不能超过
127
的类型值中呢?我重写应用程序来控制一些来自Java的设备,我需要这个值作为消息发送。我只需要简单的十六进制到Int8的转换,就像在java中一样。@WujoFefer:正如我所说的,你不能把251放在
Int8
中。因此,选择另一种类型,如
UInt8
整个通信都基于Java中的字节。这就产生了一些类似这样的问题。我知道Swift中的Int8的范围是-128到127。@WujoFefer:那你为什么要把
251
放在一个不能超过
127
的类型值里面呢?我重写应用程序来控制一些来自Java的设备,我需要这个值作为消息发送。我只需要简单的十六进制到Int8的转换,就像在java中一样。@WujoFefer:正如我所说的,你不能把251放在
Int8
中。因此,选择另一种类型,如
UInt8
整个通信都基于Java中的字节。这就产生了一些类似这样的问题。