Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String MATLAB问题中字符串的比较_String_Matlab_Base64_Encode - Fatal编程技术网

String MATLAB问题中字符串的比较

String MATLAB问题中字符串的比较,string,matlab,base64,encode,String,Matlab,Base64,Encode,我一直在摆弄我的程序,我一直在使用一个修改版本的urlread,它允许基本的身份验证。问题是我必须在基本urlread函数中包含以下代码行: urlConnection.setRequestProperty('Authorization', 'Basic passphrase'); …其中,passphrase是“user:pass”的base64编码字符串。如果我将密码短语直接放在该行的字符串中,程序将正常工作,当我尝试连接以获得生成的“基本密码短语”字符串时,问题就开始了。最初我只是: [

我一直在摆弄我的程序,我一直在使用一个修改版本的urlread,它允许基本的身份验证。问题是我必须在基本urlread函数中包含以下代码行:

urlConnection.setRequestProperty('Authorization', 'Basic passphrase');
…其中,passphrase是“user:pass”的base64编码字符串。如果我将密码短语直接放在该行的字符串中,程序将正常工作,当我尝试连接以获得生成的“基本密码短语”字符串时,问题就开始了。最初我只是:

['Basic', ' ', passphrase]
之后,我在命令窗口中进行了一些探索和实验

passphrase = 'somerandompassphrase';
teststr1 = ['Basic', ' ', passphrase];
teststr2 = ['Basic', ' ', 'somerandompassphrase'];
teststr3 = 'Basic somerandompassphrase';
strcmp(teststr1, teststr2)
strcmp(teststr1, teststr3)
strcmp(teststr2, teststr3)
输出为1,或每个为true(如预期)。但是,如果我使用'somerandompassphrase'的base64编码(即'C29TZXJHBMRVBXBHC3NWAHC2U='):

输出为0或false。这不是真的吗?可以找到base64encode函数

即使是通过快速测试:

strcmp(encoded, 'c29tZXJhbmRvbXBhc3NwaHJhc2U=')
输出仍然是0


请帮帮我,我不知道发生了什么。

在我发布问题之前,我实际上已经弄明白了这一点,但我想我会继续做下去,以防人们遇到与我相同的问题

问题来自base64encode函数。它会自动将换行符添加到字符串的末尾,导致strcmp函数返回false。要解决此问题,可以在base64encode函数的可选参数中包含一个参数,如果输入一个空白字符串,则不会在其末尾添加换行符,从而使其正常工作

encoded = base64encode(passphrase, '');
如图所示,您还可以使用Java库中的编码器,该库与MATLAB捆绑在一起,可在类路径中找到:

encoder = org.apache.commons.codec.binary.Base64();
b64str = char( encoder.encode(passphrase-0) )';
encoder = org.apache.commons.codec.binary.Base64();
b64str = char( encoder.encode(passphrase-0) )';