【发布时间】:2009-11-22 23:30:48
【问题描述】:
我尝试将字符串存储为整数,如下所示:
我读取字符串的字符,每 4 个字符执行一次:
val = (int) ch << 24 | (int) ch << 16 | (int) ch << 8 | (int) ch;
然后我将整数值放入称为内存 (=> int memory[16]) 的整数数组中。
我想以自动方式对字符串的每个长度执行此操作,而且对于任意大小的字符串,我很难再次反转该过程。有什么帮助吗?
编辑:
(从下方)
基本上,我在 JAVA 中做一个练习。这是一个 MIPS 模拟器系统。我有寄存器、基准、指令、标签、控制、APSImulator 类和其他类。当我尝试将程序从数组加载到模拟器的内存时,我实际上读取了数组中称为“程序”的每个内容并将其放入内存中。内存长 2048 位,宽 32 位。寄存器也被声明为 32 位整数。因此,当数组中有像 Datum.datum("string") 这样的内容时——Datum 类具有 IntDatum 和 StringDatum 子类——我必须以某种方式将“string”存储在模拟器的内存数据段中。内存是 0-1023 文本和 1024-2047 数据区域。我还必须用 null char 分隔字符串 - 加上对完整内存的任何检查等。我发现将字符串存储到 MemContents 的一种方法(引用类型 - 空接口 - 由内存字段所属的类实现)是将字符串每隔(2个或4个符号)存储到寄存器中,然后获取寄存器的内容并将其存储在内存中。所以,我发现实现这一点非常困难,相反的过程也很困难。
【问题讨论】:
-
你能保证输入的长度总是 4 个字符的整数倍吗?
-
您使用的是 C 还是 Java?您标记了两种语言。
-
为什么要将它放在一个整数数组中? char 数组不是更直接吗?
-
这个问题是关于 C 还是关于 Java(你有两个标签)?在后一种情况下,您应该记住 Java 字符串是 Unicode 而 char 是 16 位
-
我认为他正在尝试将 32 位整数打包和解包到字节流中。
标签: java types bit-manipulation