言語によっていろいろ違うなぁと実感。
Perl
use Encode;
binmode STDOUT, ":encoding(shiftjis)";
my @str = qw(00110000 01000010);
my $final = join('',map{pack('B8',$_)} @str);
$final = decode('UTF-16BE',$final);
print $final;
Perlのmap関数の使い勝手は最強ですね。
java
import java.io.*;
public class BinaryDecode{
public static void main(String[] args) {
String[] strArray = {"00110000","01000010"};
byte[] bytes = new byte[2];
int i = 0;
for(String s : strArray){
int j = Integer.parseInt(s,2);
if(j > 127){ j = j - 256;} //-128~127に収める処理
bytes[i++] = (byte)j;
}
try{
System.out.println(new String(bytes,"UTF-16BE"));
}catch(IOException e){
e.printStackTrace();
}
}
}
javaの場合、文字列が可変長の場合、”byte[]”の代わりに”List