字符组合拆分

本文深入讲解如何使用位操作技巧处理二进制数据,包括位移、位与、位或等操作,通过具体实例演示如何单独拆分或取出二进制某一位,以及如何组合短整型变量构成整型变量。

这里用 2863311530 四个字节举例,十六进为AAAA AAAA,二进制为1010 1010 1010 1010 1010 1010 1010 1010

那么单独拆分或者取出二进制某一位我们需要怎么做呢,

int number=2863311530;

取红色部分 number=number<<8>>24;补:00000000(1010 1010 1010 1010 1010 1010 00000000)黄色为右移动位。

去蓝色一位数 number=number<<4>>31;ok了。补:0000(1010 1010 1010 1010 1010 1010 1010 0000)黄色为右移动位。

 short number1= 170, number2= 170,number3= 170 number4= 170;

宽字符组合  int number=(((number1<<24)|(number2<<16))|(number3<<8))|number4;(左移后都补0做位运算);

或者 char* str = (char*)calloc(4,sizeof(char));

str [0]=number1; str [1]=number2; str [2]=number3;str [3]=number4;

number=(int)str ;

在处理组合字段的拆分问题时,根据使用的技术栈和数据存储形式,可以采用不同的方法进行拆分。以下分别从数据库字段拆分字符拆分和数据结构操作三个角度进行说明。 ### 数据库字段拆分(MySQL) MySQL 中可以使用 `SUBSTRING_INDEX` 函数结合 `help_topic` 表来实现字段拆分。该方法适用于字段中包含特定分隔符的字符串,例如逗号、空格等。具体实现如下: ```sql SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(a.要拆分的字段, '分隔字符', b.help_topic_id + 1), '分隔字符', -1) AS 拆分后字段别名 FROM 实际表名 a JOIN mysql.help_topic b ON b.help_topic_id < (LENGTH(a.要拆分的字段) - LENGTH(REPLACE(a.要拆分的字段, '分隔字符', '')) + 1) WHERE a.ID = 2082894; ``` 上述查询通过 `SUBSTRING_INDEX` 函数多次截取字符串,结合 `help_topic` 表生成递增的索引,从而实现字符串的逐段拆分 [^1]。 ### 字符拆分(Python) 在 Python 中,如果需要对字符串进行拆分,可以使用内置的 `split` 方法。例如,将一个以逗号分隔的字符拆分为列表: ```python data = "apple,banana,orange" split_data = data.split(",") print(split_data) ``` 此外,还可以使用 `pandas` 库处理包含复杂结构的数据,例如将 JSON 格式的字符拆分为多列: ```python import pandas as pd df = pd.DataFrame({'scene': [ {"living": "0.515", "kitchen": "0.297"}, {"kitchen": "0.401", "study": "0.005"} ]}) expanded_df = pd.json_normalize(df['scene']) result = pd.concat([df.drop('scene', axis=1), expanded_df], axis=1) print(result) ``` 这种方法适用于需要处理嵌套数据结构的情况 [^4]。 ### 数据结构拆分(Oracle) 在 Oracle 数据库中,可以使用正则表达式函数 `REGEXP_SUBSTR` 实现字符串的拆分。例如,将逗号分隔的字符拆分为多行: ```sql SELECT REGEXP_SUBSTR('1,2,5,9,1,2,5,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9', '[^,]+', 1, LEVEL) AS split_value FROM DUAL CONNECT BY REGEXP_SUBSTR('1,2,5,9,1,2,5,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9', '[^,]+', 1, LEVEL) IS NOT NULL; ``` 此方法通过正则表达式匹配逗号之间的子字符串,并利用 `LEVEL` 递归生成多行数据 [^3]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

资深码农

让我们和小姐姐唠嗑可以肢愣起来

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值