C# 如何将十进制转换为压缩十进制/COMP-3

C# 如何将十进制转换为压缩十进制/COMP-3,c#,comp-3,C#,Comp 3,我需要将一些十进制数转换为PD6.2,然后将其发送到大型机。在C#中很难找到任何函数。请帮忙。非常感谢看看这是否有效 public static void Main() { string lookup = "0123456789"; int input = 123456789; string input_str = input.ToString(); List<b

我需要将一些十进制数转换为PD6.2,然后将其发送到大型机。在C#中很难找到任何函数。请帮忙。非常感谢

看看这是否有效

        public static void Main()
        {
            string lookup = "0123456789";
            int input = 123456789;
            string input_str = input.ToString();
            List<byte> output = new List<byte>();
            int index = 0;
            //odd number characters
            if (input_str.Length % 2 == 1)
            {
                output.Add((byte)lookup.IndexOf(input_str.Substring(index++, 1)));
            }
            for (int i = index; i < input_str.Length; i += 2)
            {
                output.Add((byte)((lookup.IndexOf(input_str.Substring(i, 1))) << 4 | lookup.IndexOf(input_str.Substring(i + 1, 1))));
            }



        }
publicstaticvoidmain()
{
字符串查找=“0123456789”;
int输入=123456789;
字符串输入\u str=input.ToString();
列表输出=新列表();
int指数=0;
//奇数字符
如果(输入长度%2==1)
{
output.Add((byte)lookup.IndexOf(input_str.Substring(index++,1));
}
对于(int i=索引;i<输入长度;i+=2)
{

output.Add((byte)((lookup.IndexOf(input_str.Substring(i,1)))您已经尝试了什么代码?@Flexicoder没有任何代码。这里已经有不同语言的加载。我的建议:不要这样做。发送“纯文本”数据,在固定长度字段中的固定位置有一个小数点后的物理句号/句点。IBM大型机非常容易处理这个问题,这也意味着(假设您对所有“非文本”字段都这样做)您可以在文件/记录级别进行ASCII/EBCDIC转换,而不是按字段进行转换,如果您的记录包含二进制或压缩十进制或浮点数据(既不是ASCII也不是EBCDIC,它们只是这些东西,不能“转换”。谢谢,但输出非常奇怪。@MikeLong“非常奇怪”请不要告诉我们。请注意,代码似乎没有对嵌入的“符号”(低阶,最右边,nybble)做任何事情,但表面上它正在做部分工作。现在,想想只输出一个固定长度的“字符串”会多么容易(但没有一个定界符,只是一个固定长度的数字块,有前导零点和一个实际的小数点,后面是两个数字。我不认为你会考虑做一个名副其实的“代码”。如果你需要一个有符号的值,选择一个前导或尾随符号,显式地选为+或-。@MikeLong然后在大型机上,让我们以COBOL为例,它由
将某物移动到另一物
来处理。好的,如果源代码是压缩的,这是一样的(数据定义告诉编译器要为迁移生成什么代码),但请记住(假设)中的第二大优势(第一个是您不能把它卡住)ASCII到EBCDIC的转换。用c语言进行转换比40年前在大学里用汇编语言进行转换更容易。@jdweng这可能是因为我理解有限,但我没有看到任何符号nyble的代码???。下面是Java的答案