我知道如何在Java中执行此操作,但是找不到Java的ByteBuffer的快速等效项,因此也找不到它的.putDouble(double value)方法。
基本上,我正在寻找这样的功能:
func doubleToByteArray(value: Double) -> [UInt8]? {
. . .
}
doubleToByteArray(1729.1729) // should return [64, 155, 4, 177, 12, 178, 149, 234]
typealias Byte = UInt8
func toByteArray<T>(var value: T) -> [Byte] {
return withUnsafePointer(&value) {
Array(UnsafeBufferPointer(start: UnsafePointer<Byte>($0), count: sizeof(T)))
}
}
toByteArray(1729.1729)
toByteArray(1729.1729 as Float)
toByteArray(1729)
toByteArray(-1729)
但是结果与您的期望相反(由于字节顺序):
[234, 149, 178, 12, 177, 4, 155, 64]
[136, 37, 216, 68]
[193, 6, 0, 0, 0, 0, 0, 0]
[63, 249, 255, 255, 255, 255, 255, 255]
添加:
func fromByteArray<T>(value: [Byte], _: T.Type) -> T {
return value.withUnsafeBufferPointer {
return UnsafePointer<T>($0.baseAddress).memory
}
}
let a: Double = 1729.1729
let b = toByteArray(a) // -> [234, 149, 178, 12, 177, 4, 155, 64]
let c = fromByteArray(b, Double.self) // -> 1729.1729
对于Xcode8 / Swift3.0:
func toByteArray<T>(_ value: T) -> [UInt8] {
var value = value
return withUnsafePointer(to: &value) {
$0.withMemoryRebound(to: UInt8.self, capacity: MemoryLayout<T>.size) {
Array(UnsafeBufferPointer(start: $0, count: MemoryLayout<T>.size))
}
}
}
func fromByteArray<T>(_ value: [UInt8], _: T.Type) -> T {
return value.withUnsafeBufferPointer {
$0.baseAddress!.withMemoryRebound(to: T.self, capacity: 1) {
$0.pointee
}
}
}
对于Xcode8.1 / Swift3.0.1
func toByteArray<T>(_ value: T) -> [UInt8] {
var value = value
return withUnsafeBytes(of: &value) { Array($0) }
}
func fromByteArray<T>(_ value: [UInt8], _: T.Type) -> T {
return value.withUnsafeBytes {
$0.baseAddress!.load(as: T.self)
}
}
问题内容: 这是我的代码,用于将字节数据转换为浮点数。我尝试了本网站给出的所有答案。我正在获取此“ <44fa0000>”字节数据的指数值 谢谢 问题答案: 是二进制浮点数的 big-endian 内存表示形式。要从数据中获取数字,您必须先将其读入,从big-endian转换为主机字节序,然后将结果转换为a 。 在 Swift 2 中 例: 在 Swift 3中, 您可以使用代替,而 可以用 初始
问题内容: 我正在实现一个接口,该接口的功能类似于可以包含某种对象的表的功能。该接口指定以下功能: 在我的实现中,我感到很困惑的是,我将表数据存储在2D 数组()中。当我需要返回值时,我想执行以下操作(假定只在包含double的列上调用,因此将没有): 但是- Java不允许强制转换为。将其强制转换为可以,因为它是一个对象,而不是基元,但是我的接口指定数据将以形式返回。 所以我有两个问题: 有什么
在Objective-C中,我使用了以下内容:
问题内容: 如何快速将数组转换为 JSON 字符串?基本上,我有一个文本框,其中嵌入了一个按钮。按下按钮后,文本字段文本将添加到中。此外,我想将此数组转换为 JSON 字符串。 这是我尝试过的: 我也想使用我的方法返回 JSON 字符串。 问题答案: 就目前而言,您正在将其转换为数据,然后尝试将数据转换为JSON形式的对象(失败,不是JSON)并将其转换为字符串,基本上,您进行了一堆毫无意义的
问题内容: 当我尝试将double数组转换为Double arrayList时,出现以下错误: 线程“主”中的异常java.lang.ClassCastException:[无法将D强制转换为java.lang.Double 下面是我的代码。 我正在将此列表与另一个列表进行比较,并将结果分配给另一个double变量。 请让我知道此错误的原因。 问题答案: las,不适用于原语。Apache com
问题内容: 我想从数据库中获取图像。为此,我为图像创建了一个字节数组,该数组由字符串传递,现在我想将该字符串转换为图像格式。我正在将该图像分配给Jlabel字段。代码如下: 问题答案: