字符串存储格式
2023-04-24 08:33:13 0 举报
AI智能生成
字符串存储格式
作者其他创作
大纲/内容
保存总长度
在首地址的 n 字节中保存字符串的总长度
优点
获取字符串长度时,不用遍历字符串中的每个字符,取得首地址的前 n 字节就可以得到字符串的长度(n 的取值一般是 1、2、4)
缺点
字符串长度不能超过 n 字节的表示范围,且要多开销 n 字节空间保存长度
如果涉及通信,双方交互前必须事先知道通信字符串的长度
例子
PHP
struct {
char *val;
int len;
} str;
char *val;
int len;
} str;
Java
Java 字符串是由 char 数组和一个 int 值组成的对象,char 数组用于存储字符串的字符,int 值用于存储字符串的长度。
Redis
struct sdshdr {
// 已使用长度 占4位字节
unsigned int len;
// 未使用长度 占4位字节
unsigned int free;
// 字节数组,存储字符串
char buf[];
};
// 已使用长度 占4位字节
unsigned int len;
// 未使用长度 占4位字节
unsigned int free;
// 字节数组,存储字符串
char buf[];
};
结束符
在字符串的结尾处使用一个规定好的特殊字符,即结束符
优点
没有记录长度的开销,即不需要存储空间记录长度信息
如果涉及通信,通信字符串可以根据实际情况随时结束,结束时附上结束符即可
缺点
获取字符串长度需要遍历所有字符,寻找特殊结尾字符,在某些情况下处理效率低
例子
C++
使用结束符 \0 作为字符串结束标志
ASCII 编码使用一个字节 \0
Unicode 编码使用两个字节 \0
DOS 下的 8086 汇编
使用 $ 作为结束符
0 条评论
下一页