在Swift或Objective C中,java ByteBuffer的等价物是什么?
我需要用java中相同的方法创建一些随机数据。就像下面的片段在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的等价物是什么?我相信您要查找的对象是数据。它是一个可以表示任何
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完成。