gpt4 book ai didi

char转二进制突然出错了?

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:09 25 4
gpt4 key购买 nike

我有以下代码将 char 数组(如 'hi\n')转换为二进制并存储在 int 数组中。

void data_to_binary(char *data){

bit_pos = 0;
int i = 0, j = 0, k = 0;
char mask = 0x80;

for(i = 0; i < sizeof(data); ++i){
if(data[i] != '\0' && data[i] != '\n'){
mask = 0x80;
for(j = 0; j < 8; ++j){
binary_data[bit_pos] = ((data[i] & mask) > 0);
mask >>= 1;
bit_pos++;
}
}
}
}

这非常有效。我收到 01101000 01101001 表示嗨。我对这段代码没有任何改变,最近再次运行它,我现在得到 01111111 01111111 ....我不知道发生了什么。在摆弄不相关的代码时,我确实遇到了堆损坏错误。这是造成这种情况的原因吗?它仍然对我的代码产生负面影响?

最佳答案

  1. 您希望 sizeof(data) 是多少?你不会改用 strlen 吗?
  2. 您正在使用带符号的字符作为掩码。第一次执行“mask >>= 1;”后你得到 0xC0 而不是 0x40。尝试使用 int 或 unsigned char,以避免在移位后设置符号。

关于char转二进制突然出错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39784564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com