问题标签 [dynamic-c]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C - 将整数转换为二进制数组
我对 C 语言很陌生。我将需要一个小程序来转换int
为二进制文件,并且二进制文件最好存储在一个数组中,以便我可以进一步将它们分开以进行解码。我有以下内容:
从上面的代码中,我可以将二进制值存储在arr
. 但不是得到二进制等价物:101000
,数组现在就像{0, 0, 0, 1, 0, 1}
,这是正确答案的反转。所以问题是,如何以正确的顺序获得一个数组或者可能翻转它?我肯定有一件事,那就是最大数组长度不会超过8
元素。
此转换将被重复使用。所以我打算把它放在一个函数中,这样我就可以调用该函数,传入一个整数,然后将数组作为返回值。那么另一个问题是,获取一个数组作为返回值是否可行?
assembly - 使用 jr cc 时出错,标签(值超出范围)
我的所有代码中都出现了这个错误。
该指令jr cc, label
解释了这一点:
请注意,相对跳转从 JR 指令之后的指令的第一个字节的地址开始具有 [-128, 127] 的有限范围。
我尝试将指令放在nop
后面,jr
但仍然出现此错误。
也许是我不太明白这是如何工作的。如果有人可以向我解释更多(或举例),那就太好了。谢谢
c# - AES 加密/解密 - 动态 C 到 C#
我在 Rabbit 微处理器上使用动态 C编程语言。我相信 Dynamic C 基于 ANSI-C89 有一些非常细微的变化。他们有一个 AES 加密库,我试图在将数据发送到我的服务器之前使用它来加密数据(收效甚微)。
这是我正在使用的基于 C 的 AES 函数的文档:
AESinitStream
语法: void AESinitStream(AESstreamState *state, const char *key, const char *init_vector);
描述:设置流状态结构以开始加密或解密流。特定的流状态只能用于一个方向。
PARAMETER1: state - 要初始化的 AESstreamState 结构
PARAMETER2: key - 16 字节密码密钥,使用 NULL 指针将防止重新计算现有密钥。
PARAMETER3:init_vector - 一个 16 字节数组,表示反馈寄存器的初始状态。流的两端必须以相同的初始化向量和键开始。
AES加密流
语法:void AESencryptStream(AESstreamState *state, char *data, int count);
描述:加密一个字节数组
PARAMETER1: state - AESstreamState 结构
PARAMETER2: data - 将被加密的字节数组。
PARAMETER3: count - 数据数组的大小
这是我的 C 代码:
输出:
键:65 65 55 68 68 52 48 51 48 53 57 78 54 55 48 56
数据:249 78 60 83 130 167 37
四:74 121 108 165 83 120 36 27 161 192 84 76 105 239 34 214
这是我的 C# 代码:
输出:
键:65 65 55 68 68 52 48 51 48 53 57 78 54 55 48 56
数据:249 78 60 83 130 167 37
四:74 121 108 165 83 120 36 27 161 192 84 76 105 239 34 214
解密:t{^^?d2
如您所见,我的解密文本中出现了一些奇怪的输出。谁能指出我正确的方向?
我已经尝试使用 Dynamic C 成功解密,但是如果您认为内置的 Dynamic C AES 库是罪魁祸首,您会推荐什么?
编辑: 所以我决定使用 C# 的 AES 库对其进行加密并得到不同的密码:
使用我最初使用的相同字符串、密钥和 IV 调用上述函数会产生以下密码:
249(正确)、43、74、118、241、179、235
我将 FeedbackSize 更改为 16,前两个字节是正确的,但它也给了我一个错误(要加密的数据长度无效。)并将数组大小减少到 6 个字节。我一无所知。
这是来自 Rabbit 的使用 AESencryptStream 的一些示例代码片段(他们选择将 IV 设置为与密钥相同的值)。看来我正在正确使用此功能,但如果我错了,请告诉我: