byte配列と文字列
package com.example.test.test41;
import android.util.Log;
//import java.nio.charset.Charset;
public class clsTest1 extends clsCommon {
public void test1()
{
//変数宣言
String sData = "";
byte[] byteData = null;
//対象文字列
sData = "abc3.me";
Log.d("StringToByte", "文字列からバイト変換 -------------------");
byteData = StringToByte(sData);
displayData("StringToByte(sData)", byteData);
Log.d("ByteToString", "バイトから文字列変換 -------------------");
sData = ByteToString(byteData);
displayData("ByteToString(byteData)", sData);
/*
start: バイト配列と文字列 -----------------------
StringToByte: 文字列からバイト変換 -------------------
StringToByte(sData): abc3.me
ByteToString: バイトから文字列変換 -------------------
ByteToString(byteData): abc3.me
end: バイト配列と文字列 -----------------------
*/
}
//文字列からバイト変換
//エンコードなし
private byte[] StringToByte(String sData)
{
return StringToByte(sData, "");
}
//エンコードはオプション
/*
エンコード例
UTF-8
SJIS
US-ASCII : 7ビット ASCII
UTF-16 : 16ビット 符号化形式および符号化スキームのひとつ
*/
private byte[] StringToByte(String sData, String sEncode)
{
byte[] byteData = null;
try
{
if(sEncode.isEmpty())
{
byteData = sData.getBytes();
}
else
{
//ex.)
//sEncode : "UTF-8"
//いずれの記述でもOK
//byteData = sData.getBytes(Charset.forName(sEncode));
byteData = sData.getBytes(sEncode);
}
}
catch (Exception e)
{
Log.d("error", e.getMessage().toString());
}
return byteData;
}
//バイトから文字列変換
private String ByteToString(byte[] byteData)
{
String sData = null;
try
{
sData = new String(byteData);
}
catch (Exception e)
{
Log.d("error", e.getMessage().toString());
}
return sData;
}
}
|
エンコードを指定しない方法
(例)
sData.getBytes();
エンコードを指定する方法
(例その1)
sData.getBytes("UTF-8")
(例その2)
sData.getBytes(Charset.forName(sEncode));
byte配列から文字列にする方法はログ出力結果として、このサンプル上で表示しているように
次のようにして表示することもできます。
(例)
String.copyValueOf(new String(byteData).toCharArray())
new String(byteData)
上記で呼び出しているクラス
package com.example.test.test41;
import android.util.Log;
public class clsCommon {
//バイトの結果を表示
protected void displayData(String sTitle, byte[] byteData)
{
//次の2つのいずれも動作可能
//Log.d(sTitle, String.copyValueOf(new String(byteData).toCharArray()));
//Log.d(sTitle, new String(byteData));
String sResult = "";
sResult = new String(byteData);
Log.d(sTitle, sResult);
}
//文字列の結果を表示
protected void displayData(String sTitle, String sData)
{
Log.d(sTitle, sData);
}
//intの結果を表示
protected void displayData(String sTitle, int iData)
{
Log.d(sTitle, String.valueOf(iData));
}
//longの結果を表示
protected void displayData(String sTitle, long lData)
{
Log.d(sTitle, String.valueOf(lData));
}
//doubleの結果を表示
protected void displayData(String sTitle, double dData)
{
Log.d(sTitle, String.valueOf(dData));
}
}
|
クラスをインスタンス化して呼び出している実行部分
package com.example.test.test41;
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);
//バイト配列と文字列
Log.d("start", "バイト配列と文字列 -----------------------");
clsTest1 cls1 = new clsTest1();
cls1.test1();
cls1 = null;
Log.d("end", "バイト配列と文字列 -----------------------");
//バイト配列と数字
Log.d("start", "バイト配列と数字 -----------------------");
clsTest2 cls2 = new clsTest2();
cls2.test2();
cls2 = null;
Log.d("end", "バイト配列と数字 -----------------------");
}
}
|
|
|