小编Abr*_*ham的帖子

这个数组定义为静态而非全局?

我刚从这里开始学习C语言.

在我上面链接的部分中,作者想要从函数返回一个数组,他写道:

C不主张将局部变量的地址返回到函数外部,因此您必须将局部变量定义为静态变量.

我理解阻止返回局部变量地址的原因.原因是局部变量在其范围之外是不可用的,因此将其地址置于函数之外可能会在运行时产生错误.

但是我不理解的部分是为什么我们必须定义静态而不是全局的数组?

将本地数组定义为静态只会改变其生命周期,或者它也会改变其范围?

这是我谈到的程序:

#include <stdio.h>

/* function to generate and return random numbers */
int * getRandom( )
{
  static int  r[10];
  int i;

  /* set the seed */
  srand( (unsigned)time( NULL ) );
  for ( i = 0; i < 10; ++i)
  {
     r[i] = rand();
     printf( "r[%d] = %d\n", i, r[i]);

  }

  return r;
}

/* main function to call above defined function */
int main ()
{ …
Run Code Online (Sandbox Code Playgroud)

c arrays

2
推荐指数
1
解决办法
173
查看次数

如何与Felica内存/智能卡通信?

我有一张Felica卡.第一个问题是这张卡究竟是什么?它是智能卡还是简单的存储卡?它是一种Java卡,我.cap可以在里面加载文件或它有其专有的固定内容,我不能加载任何小程序?是GlobalPlatform标准投诉吗?

在这里读到:

索尼专有的FeliCa是一种类似于ISO/IEC 14443的智能卡技术.FeliCa具有类似于ISO/IEC 7816-4中定义的文件系统.用于访问文件系统的文件系统和命令在JIS X 6319-4 [28]中标准化.此外,FeliCa系统还具有专有的加密和安全功能.

之后我尝试向它发送一些APDU命令.第一步是与读者进行一些配置更改.因为我的阅读器配置为读取ISO14443 A型和B型卡而不是Felica卡.

由于Felica和ISO/IEC 14443卡都使用13.56 MHz频率作为载波,我认为这些类型之间的差异仅在协议层中.我对吗?如果是这样,Felica卡传输协议的名称是什么?(对于ISO/IEC 14443卡,我们有T = 1和T = CL协议).

配置完阅读器后,我尝试向卡发送命令:

Connect successful.
Send: 00 A4 04 00 00
Recv: 6A 81
Time used: 31.000 ms

Send: 00 C0 00 00 00
Recv: 6A 81
Time used: 28.000 ms

Send: 00 CA 00 00 00
Recv: 6A 81
Time used: 35.000 ms
Run Code Online (Sandbox Code Playgroud)

如上所述,我0x6A81只收到状态字.

我还搜索了很多ACS Reader数据表,一些恩智浦应用笔记以及肯定的JIS X 6319-4标准,以获得此类卡的命令列表.但我发现什么都没有适用.

所以,问题是:

  1. Felica究竟是什么?(聪明?记忆?)
  2. Felica卡和ISO/IEC14443卡有什么区别?它与NFC有关吗?
  3. 如何与此卡通信并传输数据?

更新: …

smartcard nfc javacard contactless-smartcard

2
推荐指数
1
解决办法
1487
查看次数

postgresql中NOLOGIN用户的用途是什么?

我试图了解PostgREST教程的初始步骤。

在提到的教程中,建议创建两个名为web_anonauthenticationator 的不同角色,如下所示:

create role web_anon nologin;

grant usage on schema api to web_anon;
grant select on api.todos to web_anon;

create role authenticator noinherit login password 'mysecretpassword';
grant web_anon to authenticator;
Run Code Online (Sandbox Code Playgroud)

据我所知,PostgREST 服务器接收来自客户端的 Rest API 请求,没有关于用户(角色)的任何信息。而且,据我所知,nologin 角色不能登录数据库。(他们可以发送查询吗?)

所以问题是:

  1. 为什么我们需要两个不同的角色?web_anon 的作用是什么,authenticator 的作用是什么?

  2. nologin角色在 postgres 中可以做什么?

  3. 当 PostgREST 收到一个 rest API 查询时,它使用哪个用户向数据库发送和执行该查询?

postgresql postgrest

2
推荐指数
1
解决办法
1619
查看次数

如何删除智能卡上的卡管理器小程序?

我有一个 javacard,当我重置卡时,卡上的所有小程序都被清除,除了其中一个。它是“卡管理器小程序”,其 AID 为“A0000000030000”。我想知道有没有办法删除这个小程序?!或者它是卡上的强制性的并且没有办法删除它?如果可以删除它,删除它后,我们如何处理卡?(安装另一个小程序等)谢谢。

applet javacard globalplatform

1
推荐指数
1
解决办法
711
查看次数

OP_READY和SECURED状态有什么区别?

我把我的java卡的ISD状态设置为SECURED状态.我想知道与OP_READY相比,这种新状态卡丢失的能力是什么?

注意:当我尝试时,我可以在卡上上传并安装新的.cap文件并成功删除它们[在这个新的ISD状态]!

如果有人解释不同状态之间的主要差异,我会感恩的吗?我已经阅读了全球平台规范2.2.2,但不幸的是我有点难以理解!

smartcard javacard globalplatform

1
推荐指数
1
解决办法
744
查看次数

为什么两个连续铸造会改变一个整数?

我写了以下程序:

#include <iostream>

int main()
{
   int i =123456789;
   float f=i;
   int j=f;
   std::cout<<"j-i ="<<j-i;
}
Run Code Online (Sandbox Code Playgroud)

据我们所知,浮点数在内存中至少有4个字节的长度.并且123456789在十进制中等于0x75BCD15十六进制,这小于4字节.所以我为什么在运行上面的程序时,输出不是0

ap1019@sharifvm:~$ ./a.out
j-i = 3
Run Code Online (Sandbox Code Playgroud)

c++

1
推荐指数
1
解决办法
79
查看次数

将4字节int解释为4字节浮点数

看看这个简单的程序:

#include <iostream>
using namespace std;

int main()
{
unsigned int i=0x3f800000;
float* p=(float*)(&i);
float f=*p;
cout<<f;
}
Run Code Online (Sandbox Code Playgroud)

这是我对该计划的期望:

  1. 最后一行:我们必须f在输出中看到.
  2. 上一个:fp指向的值.
  3. Previous:p指向名为变量的地址中的值i.(即价值i)
  4. i0x3f800000

所以我希望看到0x3f800000输出,但它会打印出来1.为什么?

ap1019@sharifvm:~$ ./a.out
1
ap1019@sharifvm:~$
Run Code Online (Sandbox Code Playgroud)

c++

1
推荐指数
1
解决办法
577
查看次数

Python IDLE中的"输入中不支持的字符"

我想将文件的地址分配给名为's'的变量:

>>> s= 'D:/4-Tutorials/Network/CCNA-farsi-shariaty/??? ??? ???? ??? IP ? Subnetting.mp4'
Unsupported characters in input

>>> s= u'D:/4-Tutorials/Network/CCNA-farsi-shariaty/??? ??? ???? ??? IP ? Subnetting.mp4'
Unsupported characters in input

>>> s='D:/4-Tutorials/Network/CCNA-farsi-shariaty/??? ??? ???? ??? IP ? Subnetting.mp4'.decode('utf8')
Unsupported characters in input

>>> s='D:/4-Tutorials/Network/CCNA-farsi-shariaty/??? ??? ???? ??? IP ? Subnetting.mp4'.encode('utf8')
Unsupported characters in input

>>> s='D:/4-Tutorials/Network/CCNA-farsi-shariaty/??? ??? ???? ??? IP ? Subnetting.mp4'.decode('utf-8')
Unsupported characters in input
Run Code Online (Sandbox Code Playgroud)

如您所见,我在输入错误中返回不支持的字符.而这个错误是因为文件名中的阿拉伯语/波斯语字母.

奇怪的是我可以在IDLE中写阿拉伯语/波斯语,我可以有一个包含阿拉伯语/波斯语字母的字符串变量:

>>> s = "????"
>>> s = "??? ??? ???? ???" …
Run Code Online (Sandbox Code Playgroud)

python unicode utf-8 python-idle python-2.7

1
推荐指数
1
解决办法
1429
查看次数

Java Card 对 INS = 0x70 的 APDU 有一个奇怪的响应

下面,您会看到一个简单的小程序,它返回0x6781到带有 INS=0x70或 INS= 的传入 APDU 命令0x71

package testPack;
import javacard.framework.*;

public class TestApp extends Applet
{

    public static void install(byte[] bArray, short bOffset, byte bLength) 
    {
        new TestApp().register(bArray, (short) (bOffset + 1), bArray[bOffset]);
    }

    public void process(APDU apdu)
    {
        if (selectingApplet())
        {
            return;
        }

        byte[] buf = apdu.getBuffer();
        switch (buf[ISO7816.OFFSET_INS])
        {
        case (byte)0x70:
            ISOException.throwIt((short)0x6781);
            break;
        case (byte)0x71:
            ISOException.throwIt((short)0x6781);
            break;
        default:
            ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,我收到0x6C01了带有 INS= 的 APDU 命令0x70

Send: …
Run Code Online (Sandbox Code Playgroud)

javacard pcsc smartcard-reader globalplatform

1
推荐指数
1
解决办法
415
查看次数

可执行文件编译依赖于什么?

假设我想为平台编译C程序.我知道我必须在编译中指定CPU架构,因为不同CPU架构之间的指令集不同.我也知道我必须指定目标平台操作系统,因为不同操作系统之间的可执行文件结构和系统调用之间存在差异.

Q1:问题是如果我需要指定32位或64位的OS(不是CPU架构)?

换句话说,假设我有两个系统:

  1. 64位CPU + 32位Microsoft Windows
  2. 64位CPU + 64位Microsoft Windows

编译上述系统的程序有什么不同吗?

Q2:当我添加编译器-m32的选项时gcc,这是32为了什么?它是用于操作系统还是用于CPU架构?

gcc operating-system compilation cpu-architecture 32bit-64bit

1
推荐指数
1
解决办法
86
查看次数