、53,01,04 ...と、さらなる操作のためのchar配列にそれらの値を割り当てる:私はそうのようにそれを解析したい、53010422230205222345(16進):私はこのメッセージを送信しています。
現在、私は、このように次のステップは53に例えば5と3を組み合わせることがある私はこだわっているところ、これは、独自の要素にすべての文字を置く方法「.toCharArray」とchar型の配列へのメッセージ全体を変換しようとしています。
私がしようとした場合:
for (int count = 0; count < chMsg.length; count = count + 2){
sb.append(chMsg[count]);
sb.append(chMsg[count+2]);
char results[] = sb.toString().toCharArray();
msg[count1].Msg = results[];
}
「:、文字が見つかりました:文字を[]に必要な」私はのためにエラーが得られます。
そして、のために:
for (int count = 0; count < chMsg.length; count = count + 2){
msg[count1].Msg = chMsg[count] + chMsg[count + 1];
}
I "が必要:CHAR、見つけます。int" を得ます。
私がしようとしているものよりも、いくつかのよりエレガント/シンプルなソリューションが存在しなければなりませんか?私は何をしようとしていることは、私は仕事にそれを変更する必要がないものをOKであれば?
以下は、私が試したの両方の方法と全体のコードがあります。
public class MainActivity extends AppCompatActivity {
public String sendMsg;
public StringBuilder builder = new StringBuilder();
public StringBuilder sb = new StringBuilder();
int i;
int count1;
MsgArray msg[] = new MsgArray[sendMsg.length()];
DataClass[] data = new DataClass[arraySize];
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CreateArray();
if (sendMsg != ""){
sendMsg = "";
}
sendBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendMsg = sendText.getText().toString();
Conversion();
}
});
}
public void CreateArray(){
for (i = 0; i < arraySize; i++) {
data[i] = new DataClass();
}
for (i=0; i < sendMsg.length(); i++){
msg[i] = new MsgArray();
}
}
public void Conversion()
{
count1 = 0;
char[] chMsg = sendMsg.toCharArray();
for (int count = 0; count < chMsg.length; count = count + 2){
sb.append(chMsg[count]);
sb.append(chMsg[count+2]);
char results[] = sb.toString().toCharArray();
msg[count1].Msg = results[];
msg[count1].Msg = chMsg[count] + chMsg[count + 1];
}
if(sendMsg != "")
{
for (int a = 0; a < sendMsg.length(); a = a + 2){
String s = sendMsg.substring(a, a + 2);
int n = Integer.valueOf(s, 16);
builder.append((char)n);
}
recieveText.setText("ASCII = " + builder.toString());
}
}
}
String
ユニコード、すべての文字が2バイト、UTF-16エンコードされている文字列を保持しています。だから、任意のバイト配列メモリ倍ために、いくつかの符号化およびバイトの無意味な変換があります。そして、この変換は、UTF-8の任意のバイト列を許可しませんのために間違って行くだろう。
あなたが経由で取得できるバイト:
byte[] bytes = new byte[chMsg.length / 2];
int byteI = 0;
for (int count = 0; count < chMsg.length; count = count + 2) {
int b = Integer.parseInt(new String(chMsg, count, 2), 16); // 16 for hex
bytes[byteI++] = (byte) b;
}
それにもかかわらず、文字列が必要とされなければならない、一つが使用できます。
String s = new String(bytes, "ISO-8859-1");
byte[] bytes = s.getBytes("ISO-8859-1");
構文は、char xxx[]
C / C ++と互換性があるようにJavaで導入されました。早く始まりインチ より従来(及び論理的)ですchar[] xxx
。
= results[]
単純にする必要があります = results