我有下面的NodeJS代码:
var sellerName = getTLV('1', 'Name1 Name2');
var tagBufsArrayGen = [sellerName];
var QRCodeBuf = Buffer.concat(tagBufsArrayGen);
var rqCodeB64 = QRCodeBuf.toString('base64');
console.log(rqCodeB64);
function getTLV(tagNum, tagValue){
var tagBuf = Buffer.from([tagNum], 'utf8');
var tagLenBuf = Buffer.from([tagValue.length], 'utf8');
var tagValueBuf = Buffer.from(tagValue, 'utf8');
bufsArray = [tagBuf,tagLenBuf,tagValueBuf];
return Buffer.concat(bufsArray);
}
回应是:AQtOYW1lMSBOYW1lMg==
我想用 C# 语言转换上面的相同实现。
我尝试了下面用 C# 编写的一个函数,结果与 NodeJS 响应不同。
var Resp = bufGenerator.getkey("1" , "Name1 Name2");
var Base64Enc = Convert.ToBase64String(Resp);
public static async Task<string> getkey(string tagNum, string tagValue)
{
string concat64 = string.Empty;
byte[] _t = Encoding.UTF8.GetBytes(tagNum);
byte[] _l = Encoding.UTF8.GetBytes(Encoding.UTF8.GetByteCount(tagValue).ToString());
byte[] _v = Encoding.UTF8.GetBytes(tagValue);
var c1 = System.Convert.ToBase64String(Encoding.UTF8.GetBytes(_t.ToString()));
var c2 = System.Convert.ToBase64String(Encoding.UTF8.GetBytes(_l.ToString()));
var c3 = System.Convert.ToBase64String(Encoding.UTF8.GetBytes(_v.ToString()));
var converted = c1 + c2 + c3;
return converted;
}
C# 的响应是: MTExTmFtZTEgTmFtZTI=
那是差异。比 NodeJS 响应。
有没有一种简单的方法可以在 C# 中应用相同的实现?