gpt4 book ai didi

java - 将字符串存储在 int 中

转载 作者:行者123 更新时间:2023-12-01 05:59:00 25 4
gpt4 key购买 nike

我尝试将字符串存储为整数,如下所示:

我读取字符串的字符,每 4 个字符我执行以下操作:

val = (int) ch << 24 | (int) ch << 16 | (int) ch << 8 | (int) ch;

然后我将整数值放入称为内存的整数数组中(=> int memory[16])。

我想以自动方式对字符串的每个长度执行此操作,而且对于任意大小的字符串,我很难再次反转该过程。有什么帮助吗?

编辑:

(从下往上)

基本上,我用JAVA做了一个练习。这是一个MIPS 模拟器系统。我有 Register、Datum、Instruction、Label、Control、APSimulator 类等。当我尝试将程序从数组加载到模拟器的内存时,我实际上读取了称为“程序”的数组的每个内容并将其放入内存中。内存长度为2048,宽度为32位。寄存器也声明为 32 位整数。因此,当数组中有像 Datum.datum( "string") 这样的内容时 - Datum 类具有 IntDatum 和 StringDatum 子类 - 我必须以某种方式将“字符串”存储在模拟器的内存数据段中。内存是0-1023个文本和1024-2047个数据区域。我还必须用空字符来分隔字符串 - 加上对完整内存的任何检查等。我发现将字符串存储到 MemContents (引用类型 - 空接口(interface) - 由内存字段所属的类实现)的一种方法是将字符串每隔(2 个或可能 4 个符号)存储到寄存器中,然后取出寄存器的内容并将其存储在内存中。因此,我发现很难实现这一点以及相反的过程。

最佳答案

如果您使用 C 语言,您的字符串位于一个 char 数组中,该数组的大小是 int 的倍数,您只需将指向 char 数组的指针,将其转换为指向 int 数组的指针,然后执行以下操作无论你想要什么,你的 int 数组都可以。如果您没有最后一个保证,您可以简单地编写一个函数来动态创建 int 数组:

size_t IntArrayFromString(const char * Source, int ** Dest)
{
size_t stringLength=strlen(Source);
size_t intArrElements;
intArrElements=stringLength/sizeof(int);
if(stringLength%sizeof(int)!=0)
intArrElements++;
*Dest=(int *)malloc(intArrElements*sizeof(int));
(*Dest)[intArrElements-1]=0;
memcpy(Dest, Source, stringLength);
return intArrElements;
}

调用者负责释放目标缓冲区。(我不确定是否真的有效,我没有测试)

关于java - 将字符串存储在 int 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1780410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com