字符串二进制到JAVA中的字符串8位

时间:2016-03-09 02:29:51

标签: java binary

我有一个二进制代码(比如“0100001001000011”),我将把值转换为相应的字符。

  1. 从左到右扫描二进制代码,每个单元8位。 (然后你可以得到两个二进制字符串,01000010和01000011)
  2. 任何人都可以帮我在Java中编写第1代码吗?

2 个答案:

答案 0 :(得分:0)

...不确定

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

typedef struct {
    unsigned short b0 : 1, b1 : 1, b2 : 1, b3 : 1, b4 : 1, b5 : 1, b6 : 1, b7 : 1, b8 : 1, b9 : 1, b10 : 1, b11 : 1, b12 : 1, b13 : 1, b14 : 1, b15 : 1;
}stBit;

_Bool isBigEndian() {
    union {
        unsigned short a;
        unsigned char b[2];
    }n;
    n.a = 0xFF00;
    return n.b[0] == 0xFF;
}

void printStBit(stBit s) {
    if (isBigEndian()) {
        printf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d\n", s.b0, s.b1, s.b2, s.b3, s.b4, s.b5, s.b6, s.b7, s.b8, s.b9, s.b10, s.b11, s.b12, s.b13, s.b14, s.b15);
    }
    else {
        printf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d\n", s.b8, s.b9, s.b10, s.b11, s.b12, s.b13, s.b14, s.b15, s.b0, s.b1, s.b2, s.b3, s.b4, s.b5, s.b6, s.b7);
    }
}

int main(void) {
    unsigned short n = 90;
    stBit  s;
    memcpy(&s, &n, sizeof n);
    printStBit(s);

    getchar();
    return 0;
}

免责声明:代码可能无法编译或工作,因为它在我的手机上被翻阅(但它有合理的可能性)

答案 1 :(得分:0)

此方法将包含二进制代码的字符串转换为String参数表示的ASCII字符串。

public static String binaryToString(String binary){
    String output = "";
    for (int i=0; i<binary.length(); i+=8){
        String next = binary.substring(i,i+8);
        int code = Integer.parseInt(next,2);
        output += ((char) code);
    }
    return output;
}

基本上使用Integer.parseInt(String s, int radix)将String转换为具有给定基数(或基数)的数字,然后将其转换为char