매우 구체적인 요구 사항이 있습니다. 데이터가 있습니다. 그 중 문자열과 공백은 EBCDIC로 변환되고 숫자는 16 진수로 변환됩니다.
예를 들어, 내 문자열은 "Test123"
테스트 => EBCDIC
123 => 16 진수입니다.
문자열의 모든 문자가 숫자인지 아닌지 확인한 다음 변환을 기반으로합니다.16 진수를 변환하지 않고 16 진수로 변환
byte[] dataBuffer = new byte[length];
int i = 0;
if (toEBCDIC)
{
foreach (char c in data)
{
byte[] temp = new byte[1];
if (Char.IsNumber(c))
{
string hexValue = Convert.ToInt32(c).ToString("X");
temp = Encoding.ASCII.GetBytes(hexValue);
dataBuffer[i] = temp[0];
}
else
{
temp = Encoding.GetEncoding("IBM01140").GetBytes(c.ToString());
dataBuffer[i] = temp[0];
}
i++;
}
dataBuffer.CopyTo(array, byteIndex);
숫자를 변환하려고하면 문제가 발생합니다. 출력을 메모리 스트림에 쓰고 파일에 쓰면되므로 출력을 바이트 배열로 유지해야합니다.
number의 16 진수 값을 얻은 다음이를 바이트로 변환하려고하면 실제 변환이 발생합니다.
"1"의 경우 16 진수 = 31입니다.
이제이 값을 변경하지 않고 바이트 단위로 유지하려고합니다. 나는 그것을 바이트 배열에 쓸 때 31 개만 남아 있어야한다고 말합니다. 그러나 GetBytes는 바이트 배열을 만들고, 3과 1을 각각 바이트로 변환합니다.
누구든지 이걸 도와주세요. !!
EBCDIC ?! 우리 부모님조차도 그걸 기억할만큼 나이가 들지 않았습니다. – harold
자릿수 형식을 알고 있습니까? 항상 000 <256 또는 또한 ## 0 또는 무엇? – TaW