AIRobot

AIRobot quick note


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

unsigned char和char的坑

发表于 2019-10-25
本文字数: 388 阅读时长 ≈ 1 分钟

unsigned char和char在内存中都是一字节,区别是有无符号位。

bug举例

在一次使用sunday算法时,遇到了中文内存越界的问题。
其中算法中有个计算移动量的数组move[(unsigned int)c] = xxx.
c是char类型,实际存的值是0xba。

因为符号位的存在,导致(unsigned int)c == 4294967226

总结

1
2
3
4
5
6
7
8
9
10
char c = 0xba;
unsigned char uc = 0xba;
>>> (uint8_t)c
'0xba'
>>> (unsigned int)c
4294967226
>>> (uint8_t)uc
'0xba'
>>> (unsigned int)uc
186

存bytes时用unsigned char为佳,转换时字节数匹配,uint8_t

# C++
网络协议帧格式大全
编译freeradius报错
  • 文章目录
  • 站点概览
AIRobot

AIRobot

AIRobot quick note
130 日志
15 分类
23 标签
GitHub E-Mail
Creative Commons
  1. 1. bug举例
  2. 2. 总结
0%
© 2023 AIRobot | 716k | 10:51