在Swift或Objective C中,java ByteBuffer的等价物是什么?

在Swift或Objective C中,java ByteBuffer的等价物是什么?,java,ios,objective-c,swift,Java,Ios,Objective C,Swift,我需要用java中相同的方法创建一些随机数据。就像下面的片段 ByteBuffer bb=ByteBuffer.allocate(16); bb.putdoull(0,Math.random()); bb.putdoull(8,Math.random()); 字符串输入=Hex.encodeHexString(bb.array()) 如何在iOS(Swift或Objective-C)中使用相同的方法,以及iOS中ByteBuffer的等价物是什么?我相信您要查找的对象是数据。它是一个可以表示任何

我需要用java中相同的方法创建一些随机数据。就像下面的片段

ByteBuffer bb=ByteBuffer.allocate(16);
bb.putdoull(0,Math.random());
bb.putdoull(8,Math.random());
字符串输入=Hex.encodeHexString(bb.array())


如何在iOS(Swift或Objective-C)中使用相同的方法,以及iOS中ByteBuffer的等价物是什么?

我相信您要查找的对象是
数据。它是一个可以表示任何数据并保存原始字节缓冲区的对象

对于您的特定情况,您需要将双值数组转换为数据,如下所示:

let data: Data = doubleArray.withUnsafeBufferPointer { Data(buffer: $0) }
现在要从
数据中获取十六进制字符串,我建议您参考

添加此应答代码后,您应该能够通过执行以下操作来构造十六进制字符串

let hexString = data.hexEncodedString()
因此,要将所有这些放在一起,您需要:

extension Data {
    struct HexEncodingOptions: OptionSet {
        let rawValue: Int
        static let upperCase = HexEncodingOptions(rawValue: 1 << 0)
    }

    func hexEncodedString(options: HexEncodingOptions = []) -> String {
        let format = options.contains(.upperCase) ? "%02hhX" : "%02hhx"
        return map { String(format: format, $0) }.joined()
    }
}

func generateRandomDoubleBufferHexString(count: Int, randomParameters: (min: Double, max: Double, percision: Int) = (0.0, 1.0, 100000)) -> String {

    func generateRandomDouble(min: Double = 0.0, max: Double = 1.0, percision: Int = 100000) -> Double {
        let scale: Double = Double(Int(arc4random())%percision)/Double(percision)
        return min + (max-min)*scale
    }

    var doubleArray: [Double] = [Double]() // Create empty array
    // Fill array with random values
    for _ in 0..<count {
        doubleArray.append(generateRandomDouble(min: randomParameters.min, max: randomParameters.max, percision: randomParameters.percision))
    }

    // Convert to data:
    let data: Data = doubleArray.withUnsafeBufferPointer { Data(buffer: $0) }

    // Convert to hex string
    return data.hexEncodedString()
}
扩展数据{
结构HexEncodingOptions:OptionSet{
让rawValue:Int
静态let大写=HexEncodingOptions(原始值:1字符串{
let format=options.contains(.大写)“%02hhX”:“%02hhX”
返回映射{String(格式:format,$0)}.joined()
}
}
func GeneratorDomainDoubleBufferHexstring(计数:Int,随机参数:(最小值:Double,最大值:Double,感知值:Int)=(0.0,1.0,100000))->String{
func generateRandomDouble(最小值:Double=0.0,最大值:Double=1.0,预期值:Int=100000)->Double{
let scale:Double=Double(Int(arc4random())%perision)/Double(perision)
返回最小值+(最大值-最小值)*刻度
}
var doubleArray:[Double]=[Double]()//创建空数组
//用随机值填充数组

对于0中的uu,它是字节数组:
[UInt8]
@Cy-4AH我在其他文档中也看到过同样的情况,但我们将如何创建随机字节数组。@KarthikMandava:如果您的实际问题是创建一个随机字节数组,请相应地更新问题(和标题)。这可以用Swift完成。