- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个在 Q Number format 中读取一些字符串的应用程序。
Java 实现像这样转换字符串:
int i = Integer.parseInt("00801600", 16);
System.out.println("Number from Integer.parseInt = " + i); // i=8394240
float j = Integer.reverseBytes(i);
System.out.println("After Integer.reverseBytes = " + j); // j=1474560.0
float k = j / 65536; //TWO_POWER_OF_16 = 65536
System.out.println("After Q division = " + k); // k=22.5
我玩过很多 swift 函数的组合,这(希望)非常接近:
let i: Int = Int("00801600", radix: 16) ?? 0
let istr = "Number from Int = \(i)"
let j: Double = Double(i.byteSwapped)
let jstr = "After byte swapping = \(j)"
let k: Double = Double(j) / 65536.0
let kstr = "After Q division = \(k)"
显然,Int.byteSwapped
不是我要找的。在我上面的例子中,j
是一切都偏离轨道的地方。 Java 代码生成 1474560.0
,而我的 swift 是 6333186975989760.0
。
最佳答案
Java int
始终是 32 位,因此 Integer.reverseBytes
将 0x00801600 转换为 0x00168000。
Swift Int
在 32 位平台上是 32 位,在 64 位平台(这是大多数当前平台)上是 64 位。所以在 32 位平台上,i.byteSwapped
将 0x00801600 变成 0x00168000,但在 64 位平台上,i.byteSwapped
将 0x0000000000801600 变成 0x0016800000000000。
如果你想要 32 位,请明确:
1> let i = Int32("00801600", radix: 16)!
i: Int32 = 8394240
2> let j = Double(i.byteSwapped)
j: Double = 1474560
3> let k = j / 65536
k: Double = 22.5
4>
关于ios - Swift 中 Java 的 Integer.reverseBytes() 的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56222323/
我在网上查看这个函数,想知道它是如何工作的: /* * reverseBytes - reverse bytes * Example: reverseBytes(0x1234
我遇到了这个奇怪的问题。我使用 "Character.reverseBytes(char ch)" 方法进行加密。在 NetBeans 中运行时,它工作正常。但是每当我尝试在外面运行它时,它都会给出奇
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在开发一个在 Q Number format 中读取一些字符串的应用程序。 Java 实现像这样转换字符串: int i = Integer.parseInt("00801600", 16); S
我是一名优秀的程序员,十分优秀!