gpt4 book ai didi

将海量二进制输入字符串转换成字符串C

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:29 24 4
gpt4 key购买 nike

我根本不熟悉 C,所以这可能是一个很容易解决的问题。我正在尝试获取二进制字符序列的输入 char* 数组,例如。 “0100100001101001”,并输出其相关字符串(“Hi”)。我遇到的问题是想出一种方法将输入拆分为长度为 8 的单独字符串,然后将它们单独转换以最终获得完整的输出字符串。

char* binaryToString(char* b){
char binary[8];
for(int i=0; i<8; ++i){
binary[i] = b[i];
}
printf("%s", binary);
}

我知道如何将 8 位转换成它的字符,我只需要一种方法来拆分输入字符串,使我能够转换大量 8 位二进制字符输入。

感谢任何帮助...谢谢!

最佳答案

据我所知,您的 binaryToString() 函数没有执行您希望它执行的操作。 print 语句只打印 char* b 指向的地址的前八个字符。

相反,您可以使用标准 C 函数 strtol() 将 8 位字符串转换为整数。不需要再转换了,因为二进制、十六进制、十进制等,都是相同数据的表示!所以一旦字符串转换成long,就可以用那个值来表示了一个 ASCII 字符。

更新实现(如下所示),然后您可以利用它来打印整个序列。

#include <stdio.h>
#include <string.h>

void binaryToString(char* input, char* output){

char binary[9] = {0}; // initialize string to 0's

// copy 8 bits from input string
for (int i = 0; i < 8; i ++){
binary[i] = input[i];
}

*output = strtol(binary,NULL,2); // convert the byte to a long, using base 2
}

int main()
{

char inputStr[] = "01100001011100110110010001100110"; // "asdf" in ascii
char outputStr[20] = {0}; // initialize string to 0's

size_t iterations = strlen(inputStr) / 8; // get the # of bytes

// convert each byte into an ascii value
for (int i = 0; i < iterations; i++){
binaryToString(&inputStr[i*8], &outputStr[i]);
}

printf("%s", outputStr); // print the resulting string
return 0;
}

我编译了这个,它似乎工作正常。当然,这可以做得更干净、更安全,但这应该有助于您入门。

关于将海量二进制输入字符串转换成字符串C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47644521/

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