美文网首页
Swift 多个开关变量用int类型与后端交互

Swift 多个开关变量用int类型与后端交互

作者: 流星阁 | 来源:发表于2025-02-24 09:55 被阅读0次

假设有这样一个场景,如果你有一个包含多个开关变量(例如 60 个布尔值)的 JSON 数据,并且想将它们简化成一个 Int 类型进行传输,可以通过使用 位运算 来实现。这种方式利用了整数的每一位来表示一个开关状态,这样就可以在一个 Int 中存储多个布尔值。
1.每个布尔值对应一个位:你可以用一个 Int 类型来存储所有布尔值的状态。假设你有 60 个布尔值,那么你可以使用一个 64 位整数(Int64)来存储它们(即每一位表示一个布尔值)。
2.使用位运算来设置和读取布尔值:
使用 按位与(&) 操作读取某一位的状态。
使用 按位或(|) 操作设置某一位的状态。

代码示例:

// Int 32位  Int64 64位  Int128
// 将布尔值数组转换为 Int:
func encodeSwitchesToInt(switches: [Bool]) -> Int64 {
    var result: Int64 = 0
    for (index, switchState) in switches.enumerated() {
        if switchState {
            result |= (1 << index)  // 设置对应的位为 1
        }
    }
    return result
}

// 从 Int 中解码出布尔值:
func decodeIntToSwitches(value: Int64, count: Int) -> [Bool] {
    var switches: [Bool] = []
    for i in 0..<count {
        let switchState = (value & (1 << i)) != 0
        switches.append(switchState)
    }
    return switches
}

let switches = [true, false, true, true, false, false, true, true, false, false] // 10个开关
let encoded = encodeSwitchesToInt(switches: switches)
print("Encoded int: \(encoded)")

let decodedSwitches = decodeIntToSwitches(value: encoded, count: switches.count)
print("Decoded switches: \(decodedSwitches)")

编码时要确保每个开关的顺序固定,否则解码时可能出现错乱,以及int类型对应的位数

相关文章

  • swift 中的Array和ArraySlice

    1.swift的存储类型(所有类型,int, double, String······) Swift 数组用...

  • swift和OC混编的坑

    在swift 中的类变量声明Int类型时不能是Int?,否则在OC中读不出这个变量.如果声明Int变量同时赋值就可以.

  • swift 基础部分

    swift 基础部分: //变量和常量 var num=10;//这是int类型的变量 var num2="my ...

  • 前后端交互如何保证安全性?

    前言 web与后端,andorid与后端,ios与后端,像这种类型的交互其实就属于典型的前端与后端进行交互。在与B...

  • Swift类型

    Swift设计为类型安全语言,类型之间不可以隐性转换,必须显性转换。Swift分常量与变量,常量声明用let, 而...

  • Swift基础知识

    变量和常量 任何 Swift 中的变量要么不变的,要么是可变的。这句话可不要和 Int、 Float 这些变量类型...

  • Note 3 Swift (1)

    Swift学习笔记 变量与常量 变量 常量 值类型与引用类型 值类型 引用类型 数组与字典 数组 字典

  • Swift入门_基础部分

    1.变量和常量 Swift中的变量和和常量的声明和JS很像,Swift中,不会再看到像OC中那样的数据类型(int...

  • Swift学习:Swift by Tutorials 第一章概要

    变量 命名方式: var a = 1或者var a: Int = 1。 命名可以不指定类型,因为Swift可推测变...

  • NSString转int和BOOL值判空规范

    1.NSString转int用intergerValue 2.BOOL类型变量不能用int型

网友评论

      本文标题:Swift 多个开关变量用int类型与后端交互

      本文链接:https://www.haomeiwen.com/subject/strwpjtx.html