#include <stdio.h>
#include "stdlib.h"
char *get_byte_bits(char c);
void print_byte_array(char *a, int len);
char **get_bits(char *chars, int len);
typedef struct ByteBits {
char bits[8];
int length: 8;
} ByteBits;
ByteBits *get_byte_bits2(char c);
typedef struct ByteBitsArray {
ByteBits **byteBitsArrayPtr;
int length;
} ByteBitsArray;
struct ByteBitsArray *get_bits2(char *chars, int len);
int main() {
char c[] = {-128, 127};
const int size = 2;
char **r = get_bits(c, size);
for (int i = 0; i < size; i++) {
print_byte_array(r[i], 8);
printf("\n");
}
struct ByteBitsArray *rr = get_bits2(c, size);
for (int i = 0; i < size; i++) {
print_byte_array(rr->byteBitsArrayPtr[i]->bits, rr->byteBitsArrayPtr[i]->length);
printf("\n");
}
return 0;
}
void print_byte_array(char *a, int len) {
for (int i = 0; i < len; i++) {
printf("%c", a[i]);
}
}
char **get_bits(char *chars, int len) {
char **result = malloc(sizeof(char *) * len);
for (int i = 0; i < len; i++) {
result[i] = get_byte_bits(chars[i]);
}
return result;
}
char *get_byte_bits(char c) {
unsigned char a[] = {
1, 2, 4, 8, 16, 32, 64, 128
};
const int SIZE = sizeof(a) / sizeof(char);
char *result = malloc(sizeof(char) * SIZE);
for (int i = 0; i < SIZE; i++) {
if (((unsigned char) (a[i] & c)) == a[i]) {
result[SIZE - (i + 1)] = '1';
} else {
result[SIZE - (i + 1)] = '0';
}
}
return result;
}
struct ByteBitsArray *get_bits2(char *chars, int len) {
struct ByteBitsArray *cbs_ptr = malloc(sizeof(ByteBitsArray));
cbs_ptr->byteBitsArrayPtr = malloc(sizeof(ByteBits *) * len);
cbs_ptr->length = len;
for (int i = 0; i < len; i++) {
cbs_ptr->byteBitsArrayPtr[i] = get_byte_bits2(chars[i]);
}
return cbs_ptr;
}
ByteBits *get_byte_bits2(char c) {
unsigned char a[] = {
1, 2, 4, 8, 16, 32, 64, 128
};
ByteBits *cb_ptr = malloc(sizeof(ByteBits));
cb_ptr->length = 8;
for (int i = 0; i < cb_ptr->length; i++) {
if (((unsigned char) (a[i] & c)) == a[i]) {
cb_ptr->bits[cb_ptr->length - (i + 1)] = '1';
} else {
cb_ptr->bits[cb_ptr->length - (i + 1)] = '0';
}
}
return cb_ptr;
}
C 语言 打印 二进制 格式 字符串
最新推荐文章于 2025-02-11 23:18:49 发布