ASCIIコードを文字に変換
package com.example.test.test42;
import android.util.Log;
import java.nio.ByteBuffer;
public class clsTest1 {
public void test1()
{
//ASCIIコードを文字に変換した結果を表示
for(int i=65; i<65+26; i++)
{
Log.d("i:"+String.valueOf(i),
convertAsciiToString(i));
}
//[結果]
/*
start: ASCIIコードを文字に変換した結果を表示 ----
i:65: A
i:66: B
i:67: C
i:68: D
i:69: E
i:70: F
i:71: G
i:72: H
i:73: I
i:74: J
i:75: K
i:76: L
i:77: M
i:78: N
i:79: O
i:80: P
i:81: Q
i:82: R
i:83: S
i:84: T
i:85: U
i:86: V
i:87: W
i:88: X
i:89: Y
i:90: Z
end: ASCIIコードを文字に変換した結果を表示 ----
*/
}
private String convertAsciiToString(int iData)
{
int iSize = 0;
byte[] byteData = null;
String sData = null;
ByteBuffer buffer = null;
try
{
//[byteデータ作成その1]
/*
//バイト配列に整数を格納します
//intは4バイト
byteData =ByteBuffer.allocate(4).putInt(iData).array();
//「US-ASCII」エンコードを使用して
*/
//[byteデータ作成その1]
iSize = Integer.SIZE / Byte.SIZE;
buffer = ByteBuffer.allocate(iSize);
//byteData = buffer.putInt(iData & 0xFF).array();
byteData = buffer.putInt(iData).array();
//文字に変換した結果を返します
//下記のいずれの変換方法でも可能でした
sData = new String(byteData, "US-ASCII");
//sData = new String(byteData, "UTF-8");
//sData = new String(byteData);
//sData = String.copyValueOf(new String(byteData).toCharArray());
//文字化け対策(暫定的として)
//ex.)
//i:65: ������A
if(sData.length()>0)
sData=sData.substring(sData.length() -1 , sData.length());
}
catch (Exception e)
{
Log.d("error", e.getMessage().toString());
sData = "";
return sData;
}
finally {
byteData = null;
buffer = null;
}
return sData;
}
}
|
byte配列に数字を設定する方法としてサンプルでは次の2種類を試しました。
byte配列 =ByteBuffer.allocate(4).putInt(int変数).array();
(例)
byteData =ByteBuffer.allocate(4).putInt(iData).array();
サイズを取得
ByteBufferオブジェクト =ByteBuffer.allocate(サイズ);
byte配列 = ByteBuffer.putInt(int変数).array();
(例)
iSize = Integer.SIZE / Byte.SIZE;
buffer = ByteBuffer.allocate(iSize);
//byteData = buffer.putInt(iData & 0xFF).array();
byteData = buffer.putInt(iData).array();
上記バイト配列を文字列に変換します。
次のいずれでも変換できます。
sData = new String(byteData, "US-ASCII");
//sData = new String(byteData, "UTF-8");
//sData = new String(byteData);
//sData = String.copyValueOf(new String(byteData).toCharArray());
クラスをインスタンス化して実行する呼び元
package com.example.test.test42;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
//ASCIIコードを文字列に変換した結果を表示
Log.d("start", "ASCIIコードを文字に変換した結果を表示 ----");
clsTest1 cls1 = new clsTest1();
cls1.test1();
cls1 = null;
Log.d("end", "ASCIIコードを文字に変換した結果を表示 ----");
//文字をASCIIコードに変換
Log.d("start", "文字をASCIIコードに変換 ----");
clsTest2 cls2 = new clsTest2();
cls2.test2();
cls2 = null;
Log.d("end", "文字をASCIIコードに変換 ----");
}
}
|
|
|