0

我有下面的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# 中应用相同的实现?

4

0 回答 0