0603测试代码及截图

代码:

utils.h

#ifndef _UTIL_H_
#define _UTIL_H_

int Hex2Char(int fromi, char *toc);
int Char2Hex(char fromc, int *toi);

int Bitstr2ByteArr(char *bs, char *ba);
int ByteArr2Bitstr(char *ba, char *bs);

int Int2ByteArr(int i, char *ba);
int ByteArr2Int(char *ba, int *i);

#endif

utils.c

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

int Hex2Char(int fromi, char *toc) {
    if (fromi >= 0 && fromi <= 9) {
        *toc = fromi + '0';
    } else if (fromi >= 10 && fromi <= 15) {
        *toc = fromi + 'A' - 10;
    } else {
        return -1; // 错误值
    }
    return 0;
}

int Char2Hex(char fromc, int *toi) {
    if (fromc >= '0' && fromc <= '9') {
        *toi = fromc - '0';
    } else if (fromc >= 'A' && fromc <= 'F') {
        *toi = fromc - 'A' + 10;
    } else if (fromc >= 'a' && fromc <= 'f') {
        *toi = fromc - 'a' + 10;
    } else {
        return -1; // 错误值
    }
    return 0;
}

int ByteArr2Bitstr(char *ba, char *bs) {
    int i, j, L, a;
    L = strlen(ba);
    for (j = 0; j < L; j++) {
        Char2Hex(ba[j], &a);
        for (i = 0; i < 4; i++) {
            bs[4 * j + 3 - i] = a % 2 + '0';
            a = a / 2;
        }
    }
    bs[4 * L] = '\0';
    return 0;
}

int Bitstr2ByteArr(char *bs, char *ba) {
    int i, j, L, sum;
    L = strlen(bs);
    for (i = 0; i < L / 4; i++) {
        sum = 0;
        for (j = 0; j < 4; j++) {
            sum = sum * 2 + (bs[4 * i + j] - '0');
        }
        Hex2Char(sum, &ba[i]);
    }
    ba[L / 4] = '\0';
    return 0;
}

int Int2ByteArr(int i, char *ba) {
    sprintf(ba, "%02X", i & 0xFF);
    return 0;
}

int ByteArr2Int(char *ba, int *i) {
    int high, low;
    Char2Hex(ba[0], &high);
    Char2Hex(ba[1], &low);
    *i = (high << 4) | low;
    return 0;
}

main.c

#include <stdio.h>
#include "utils.h"

int main() {
    char ba[100];
    char bs[100];

    printf("输入字节数组 (例如1A3F):\n");
    scanf("%s", ba);
    ByteArr2Bitstr(ba, bs);
    printf("位串:\n");
    printf("%s\n", bs);

    char baa[100];
    char bss[100];
    printf("输入位串 (例如0001101000111111):\n");
    scanf("%s", bss);
    Bitstr2ByteArr(bss, baa);
    printf("字节数组:\n");
    printf("%s\n", baa);

    int num;
    char byteArr[3]; // 两个字符加一个终止符
    printf("输入一个整数 (0-255):\n");
    scanf("%d", &num);
    Int2ByteArr(num, byteArr);
    printf("整数转换为字节数组:\n");
    printf("%s\n", byteArr);

    int convertedNum;
    printf("输入一个字节数组 (例如1A):\n");
    scanf("%s", byteArr);
    ByteArr2Int(byteArr, &convertedNum);
    printf("字节数组转换为整数:\n");
    printf("%d\n", convertedNum);

    return 0;
}

截图


posted @ 2024-06-03 09:38  6666666mjz  阅读(22)  评论(0)    收藏  举报